summaryrefslogtreecommitdiffstats
path: root/src/uscxml/plugins/invoker/imap/IMAPInvoker.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/uscxml/plugins/invoker/imap/IMAPInvoker.h')
-rw-r--r--src/uscxml/plugins/invoker/imap/IMAPInvoker.h78
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 */