ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/proj/trunk/WinXPFAQPoll/IMAPHandler.h
Revision: 123
Committed: 2003-04-02T18:10:51-08:00 (22 years, 2 months ago) by douglas
Content type: text/x-c
File size: 2872 byte(s)
Log Message:
Got voting stuff working, needed to make some changes to IMAPHandler.

File Contents

# User Rev Content
1 douglas 123 // IMAP Handler
2 douglas 104 //
3     // Douglas Thrift
4     //
5     // IMAPHandler.h
6    
7     #ifndef _IMAPHandler_h_
8     #define _IMAPHandler_h_
9    
10 douglas 107 #include <iostream>
11 douglas 123 #include <sstream>
12 douglas 107 #include <string>
13     #include <cstdlib>
14     #include <cstdio>
15 douglas 104
16 douglas 107 using namespace std;
17    
18     // Lovely C Sockets!
19     #ifdef _WIN32
20    
21     // Windows Sockets
22     #include <winsock2.h>
23     #include <windows.h>
24    
25     #else
26    
27     // BSD Sockets
28     #include <unistd.h>
29     #include <sys/types.h>
30     #include <sys/socket.h>
31     #include <netinet/in.h>
32     #include <netdb.h>
33    
34     #define INVALID_SOCKET -1
35     #define SOCKET_ERROR -1
36    
37     typedef int SOCKET;
38    
39     inline int closesocket(SOCKET s) { return close(s); }
40    
41     #endif // _WIN32
42    
43     #include <openssl/ssl.h>
44     #include <openssl/err.h>
45     #include <openssl/rand.h>
46    
47     extern string program;
48     extern bool debug;
49    
50 douglas 104 class IMAPHandler
51     {
52     private:
53 douglas 107 #ifdef _WIN32
54     WSADATA data;
55     #endif // _WIN32
56     SOCKET sock;
57     SSL_CTX* ctx;
58     SSL* ssl;
59     bool tls;
60     char* buffer;
61     char letter;
62     unsigned number;
63     bool success;
64     string command();
65     string imap(const string& imap);
66     string imap(const string& imap, const string& args);
67     string imap(const string& imap, const string& args, const string& message);
68     void putline(const string line = "");
69     string getline();
70     void error(const string& prefix, bool host = false);
71     void error(const string& prefix, int code);
72 douglas 104 public:
73 douglas 107 IMAPHandler(const string& server, bool tls = false);
74 douglas 104 ~IMAPHandler();
75 douglas 107 string capability() { return imap("CAPABILITY"); }
76     string starttls();
77     string noop() { return imap("NOOP"); }
78     string logout() { return imap("LOGOUT"); }
79     string login(const string& args) { return imap("LOGIN", args); }
80 douglas 116 string select(const string& args) { return imap("SELECT", args); }
81     string examine(const string& args) { return imap("EXAMINE", args); }
82     string create(const string& args) { return imap("CREATE", args); }
83     string delete_(const string& args) { return imap("DELETE", args); }
84     string rename(const string& args) { return imap("RENAME", args); }
85     string subscribe(const string& args) { return imap("SUBSCRIBE", args); }
86     string unsubscribe(const string& args) { return imap("UNSUBSCRIBE", args); }
87     string list(const string& args) { return imap("LIST", args); }
88     string lsub(const string& args) { return imap("LSUB", args); }
89     string status_(const string& args) { return imap("STATUS", args); }
90 douglas 104 string append(const string& args, const string& message)
91     {
92 douglas 116 return imap("APPEND", args, message);
93 douglas 104 }
94 douglas 116 string check() { return imap("CHECK"); }
95     string close() { return imap("CLOSE"); }
96     string expunge() { return imap("EXPUNGE"); }
97     string search(const string& args) { return imap("SEARCH", args); }
98     string fetch(const string& args) { return imap("FETCH", args); }
99     string store(const string& args) { return imap("STORE", args); }
100     string copy(const string& args) { return imap("COPY", args); }
101     string uid(const string& args) { return imap("UID", args); }
102 douglas 107 bool successful() { return success; }
103 douglas 104 };
104    
105     #endif // _IMAPHandler_h_