KIMAP2

listrightsjob.cpp
1 /*
2  Copyright (c) 2009 Andras Mantia <[email protected]>
3 
4  This library is free software; you can redistribute it and/or modify it
5  under the terms of the GNU Library General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or (at your
7  option) any later version.
8 
9  This library is distributed in the hope that it will be useful, but WITHOUT
10  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12  License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to the
16  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17  02110-1301, USA.
18 */
19 
20 #include "listrightsjob.h"
21 
22 #include "acljobbase_p.h"
23 #include "message_p.h"
24 #include "session_p.h"
25 #include "rfccodecs.h"
26 
27 namespace KIMAP2
28 {
29 class ListRightsJobPrivate : public AclJobBasePrivate
30 {
31 public:
32  ListRightsJobPrivate(Session *session, const QString &name) : AclJobBasePrivate(session, name), defaultRights(Acl::None) {}
33  ~ListRightsJobPrivate() { }
34 
35  Acl::Rights defaultRights;
36  QList<Acl::Rights> possibleRights;
37 
38 };
39 }
40 
41 using namespace KIMAP2;
42 
43 ListRightsJob::ListRightsJob(Session *session)
44  : AclJobBase(*new ListRightsJobPrivate(session, "ListRights"))
45 {
46 
47 }
48 
49 ListRightsJob::~ListRightsJob()
50 {
51 }
52 
53 void ListRightsJob::doStart()
54 {
55  Q_D(ListRightsJob);
56 
57  d->sendCommand("LISTRIGHTS", '\"' + KIMAP2::encodeImapFolderName(d->mailBox.toUtf8()) + "\" \"" + d->id + "\"");
58 }
59 
60 void ListRightsJob::handleResponse(const Message &response)
61 {
62  Q_D(ListRightsJob);
63 
64  if (handleErrorReplies(response) == NotHandled) {
65  if (response.content.size() >= 4 &&
66  response.content[1].toString() == "LISTRIGHTS") {
67  QByteArray s = response.content[4].toString();
68  d->defaultRights = Acl::rightsFromString(s);
69  int i = 5;
70  while (i < response.content.size()) {
71  s = response.content[i].toString();
72  d->possibleRights.append(Acl::rightsFromString(s));
73  i++;
74  }
75  }
76  }
77 }
78 
80 {
81  Q_D(ListRightsJob);
82  d->setIdentifier(identifier);
83 }
84 
86 {
87  Q_D(ListRightsJob);
88  return d->identifier();
89 }
90 
92 {
93  Q_D(ListRightsJob);
94  return d->defaultRights;
95 }
96 
98 {
99  Q_D(ListRightsJob);
100  return d->possibleRights;
101 }
This file is part of the IMAP support library and defines the RfcCodecs class.
Lists the possible and automatic rights for an identifier on a mailbox.
Definition: listrightsjob.h:49
void setIdentifier(const QByteArray &identifier)
Sets the identifier that should be looked up.
QList< Acl::Rights > possibleRights()
The rights it is possible to assign to the identifier.
Base class for jobs that operate on mailbox ACLs.
Definition: acljobbase.h:44
Definition: acl.cpp:25
KIMAP2_EXPORT Rights rightsFromString(const QByteArray &string)
Convert the text form of a set of rights into a Rights bitflag.
Definition: acl.cpp:69
QByteArray & append(char ch)
Acl::Rights defaultRights()
The rights that will always be assigned to the identifier, regardless of the access control list...
QByteArray identifier()
The identifier that will be looked up.
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Wed May 27 2020 22:35:08 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.