summaryrefslogtreecommitdiffstats
path: root/libmail/smapfetchattr.H
diff options
context:
space:
mode:
Diffstat (limited to 'libmail/smapfetchattr.H')
-rw-r--r--libmail/smapfetchattr.H83
1 files changed, 83 insertions, 0 deletions
diff --git a/libmail/smapfetchattr.H b/libmail/smapfetchattr.H
new file mode 100644
index 0000000..89ca22d
--- /dev/null
+++ b/libmail/smapfetchattr.H
@@ -0,0 +1,83 @@
+/*
+** Copyright 2003, Double Precision Inc.
+**
+** See COPYING for distribution information.
+*/
+#ifndef libmail_smapfetchattr_H
+#define libmail_smapfetchattr_H
+
+#include "libmail_config.h"
+#include "mail.H"
+#include "smap.H"
+#include "envelope.H"
+#include "structure.H"
+
+#include "smapmsgrange.H"
+
+LIBMAIL_START
+
+class smapFETCHATTR : public smapHandler {
+
+ const char *getName();
+
+ smapUidSet uidSet;
+ smapMsgRange fetchList;
+ mail::account::MessageAttributes attributes;
+ mail::callback::message &msgcallback;
+
+ size_t nextPtr;
+
+public:
+ smapFETCHATTR(const std::vector<size_t> &messages,
+ mail::account::MessageAttributes attributesArg,
+ mail::callback::message &callbackArg,
+ mail::imap &imapAccount);
+ ~smapFETCHATTR();
+
+ void installed(imap &);
+ bool ok(std::string);
+
+ bool go();
+
+private:
+ void fetchedMessageSize(size_t msgNum,
+ unsigned long bytes);
+
+ void fetchedInternalDate(size_t msgNum,
+ time_t internalDate);
+
+ void beginProcessData(imap &imapAccount,
+ std::vector<const char *> &words,
+ unsigned long estimatedSize);
+ void processData(imap &imapAccount,
+ std::string data);
+ void endData(imap &imapAccount);
+
+ std::string fetchingHeader;
+ size_t fetchingMessageNum;
+ bool doFetchingEnvelope;
+ bool seenMimeVersion;
+
+ mail::mimestruct *doFetchingStructure;
+ size_t fetchingStructCount;
+
+ mail::envelope fetchingEnvelope;
+ mail::mimestruct fetchingStructure;
+
+ void processFetchedHeader(std::string);
+
+ void checkMimeVersion();
+
+ static mail::mimestruct *findMimeId(mail::mimestruct *p,
+ std::string mimeid,
+ size_t recursionLevel);
+
+ static void parseMimeHeader(std::string,
+ std::string &,
+ mail::mimestruct::parameterList &);
+
+};
+
+LIBMAIL_END
+
+#endif