diff options
Diffstat (limited to 'src/uscxml/plugins/invoker/imap/IMAPInvoker.h')
-rw-r--r-- | src/uscxml/plugins/invoker/imap/IMAPInvoker.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/uscxml/plugins/invoker/imap/IMAPInvoker.h b/src/uscxml/plugins/invoker/imap/IMAPInvoker.h new file mode 100644 index 0000000..b772bdd --- /dev/null +++ b/src/uscxml/plugins/invoker/imap/IMAPInvoker.h @@ -0,0 +1,78 @@ +/** + * @file + * @author 2012-2013 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de) + * @copyright Simplified BSD + * + * @cond + * This program is free software: you can redistribute it and/or modify + * it under the terms of the FreeBSD license as published by the FreeBSD + * project. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * You should have received a copy of the FreeBSD license along with this + * program. If not, see <http://www.opensource.org/licenses/bsd-license>. + * @endcond + */ + +#ifndef IMAPINVOKER_H_W09JFED0 +#define IMAPINVOKER_H_W09JFED0 + +#include <uscxml/Interpreter.h> + +#ifdef BUILD_AS_PLUGINS +#include "uscxml/plugins/Plugins.h" +#endif + +#include <curl/curl.h> + +namespace uscxml { + +class IMAPInvoker : public InvokerImpl { +public: + IMAPInvoker(); + virtual ~IMAPInvoker(); + virtual boost::shared_ptr<InvokerImpl> create(InterpreterImpl* interpreter); + + virtual std::set<std::string> getNames() { + std::set<std::string> names; + names.insert("imap"); + names.insert("http://uscxml.tk.informatik.tu-darmstadt.de/#imap"); + return names; + } + + virtual Data getDataModelVariables(); + virtual void send(const SendRequest& req); + virtual void cancel(const std::string sendId); + virtual void invoke(const InvokeRequest& req); + +protected: + + class IMAPContext { + public: + IMAPContext() : readPtr(0) {} + std::string content; + size_t readPtr; + IMAPInvoker* invoker; + }; + + CURL* _curl; + std::string _username; + std::string _password; + std::string _server; + + std::list<std::string> getAtoms(std::list<Data> list); + void getAttachments(std::list<Data> list, std::list<Data>& attachments); + static size_t writeCurlData(void *ptr, size_t size, size_t nmemb, void *userdata); +}; + +#ifdef BUILD_AS_PLUGINS +PLUMA_INHERIT_PROVIDER(IMAPInvoker, InvokerImpl); +#endif + +} + + +#endif /* end of include guard: IMAPINVOKER_H_W09JFED0 */ |