Bincimap 2.0.16
Easy Imapping
Loading...
Searching...
No Matches
operator-unsubscribe.cc
Go to the documentation of this file.
1
7#include <string>
8#include <vector>
9#include <iostream>
10#include "convert.h"
11#include <sys/stat.h>
12
13#include "recursivedescent.h"
14
15#include "session.h"
16#include "depot.h"
17#include "operators.h"
18
19using namespace ::std;
20using namespace Binc;
21
22//----------------------------------------------------------------------
24{
25}
26
27//----------------------------------------------------------------------
29{
30}
31
32//----------------------------------------------------------------------
33const string UnsubscribeOperator::getName(void) const
34{
35 return "UNSUBSCRIBE";
36}
37
38//----------------------------------------------------------------------
40{
42}
43
44//------------------------------------------------------------------------
46 Request &command)
47{
48 const string &mailbox = command.getMailbox();
49 const string &canonmailbox = toCanonMailbox(mailbox);
50
51 depot.loadSubscribes();
52 if (!depot.unsubscribeTo(canonmailbox)) {
53 Session &session = Session::getInstance();
54 session.setLastError("Not subscribed to " + toImapString(mailbox));
55 return NO;
56 }
57
58 depot.saveSubscribes();
59
60 return OK;
61}
62
63//----------------------------------------------------------------------
65{
66 Session &session = Session::getInstance();
67
68 if (c_in.getUidMode())
69 return REJECT;
70
72 if ((res = expectSPACE()) != ACCEPT) {
73 session.setLastError("Expected SPACE");
74 return res;
75 }
76
77 string mailbox;
78 if ((res = expectMailbox(mailbox)) != ACCEPT) {
79 session.setLastError("Expected mailbox");
80 return res;
81 }
82
83 if ((res = expectCRLF()) != ACCEPT) {
84 session.setLastError("Expected CRLF");
85 return res;
86 }
87
88 c_in.setMailbox(mailbox);
89
90 return ACCEPT;
91}
virtual void loadSubscribes(void)
Definition: depot.cc:354
virtual bool saveSubscribes(void) const
Definition: depot.cc:396
virtual bool unsubscribeTo(const std::string mailbox)
Definition: depot.cc:340
void setMailbox(const std::string &s_in)
Definition: imapparser.cc:155
const std::string & getMailbox(void) const
Definition: imapparser.cc:161
bool getUidMode(void) const
Definition: imapparser.cc:40
void setLastError(const std::string &error) const
Definition: session.cc:185
@ AUTHENTICATED
Definition: session.h:37
static Session & getInstance(void)
Definition: session.cc:33
virtual ParseResult parse(Request &) const
ProcessResult process(Depot &, Request &)
const std::string getName(void) const
Declaration of miscellaneous convertion functions.
Definition: bincimapd.cc:9
std::string toImapString(const std::string &s_in)
Definition: convert.h:103
Operator::ParseResult expectSPACE(void)
std::string toCanonMailbox(const std::string &s_in)
Definition: convert.h:216
Operator::ParseResult expectCRLF(void)
Operator::ParseResult expectMailbox(std::string &s_in)
Declaration of all operators.
Declaration of a recursive descent IMAP command parser.