diff options
Diffstat (limited to 'libmail/addressbookget.H')
| -rw-r--r-- | libmail/addressbookget.H | 69 | 
1 files changed, 69 insertions, 0 deletions
diff --git a/libmail/addressbookget.H b/libmail/addressbookget.H new file mode 100644 index 0000000..90ff1bc --- /dev/null +++ b/libmail/addressbookget.H @@ -0,0 +1,69 @@ +/* +** Copyright 2002, Double Precision Inc. +** +** See COPYING for distribution information. +*/ +#ifndef libmail_addressbookget_H +#define libmail_addressbookget_H + +#include "addressbook.H" +#include "structure.H" +#include "rfcaddr.H" + +#include <map> + +// +// Extract an address book entry, as follows: +// +// 1. Read the message's MIME structure. +// 2. Verify the presence of text/x-libmail-addressbook content. +// 3. Read text/x-libmail-addressbook content. + +template<class T> +class mail::addressbook::GetAddressList : public mail::callback::message { + +	mail::ptr<mail::addressbook> addressBook; +	size_t msgNum; +	std::vector<T> &addrListRet; +	mail::callback &callback; +	mail::mimestruct mimeStructure; + +	void success(std::string successMsg); +	void (mail::addressbook::GetAddressList<T>::*successFunc)(std::string); + +	void readstructure(std::string successMsg); +	void readContents(std::string successMsg); + +	void fail(std::string failMsg); + +	void messageStructureCallback(size_t messageNumber, +				      const mail::mimestruct +				      &messageStructure); +	void messageTextCallback(size_t n, std::string text); + +	void reportProgress(size_t bytesCompleted, +			    size_t bytesEstimatedTotal, + +			    size_t messagesCompleted, +			    size_t messagesEstimatedTotal); + +	std::string linebuffer; +	// Reading x-libmail-addressbook content; partial line read. + +	void addressBookLine(std::string text); + +	std::map<std::string, std::string> addressBookLineMap; +	std::string lastAddressBookLine; +	// Name of the current x-libmail-addressbook header line being read. + +public: +	GetAddressList(mail::addressbook *addressBookArg, +		       size_t msgNumArg, +		       std::vector<T> &addrListRetArg, +		       mail::callback &callbackArg); +	~GetAddressList(); + +	void go(); +}; + +#endif  | 
