aboutsummaryrefslogtreecommitdiffstats
path: root/src/mime.h
diff options
context:
space:
mode:
authorNils Achtergarde <[email protected]>2018-01-04 21:39:25 +0000
committerNils Achtergarde <[email protected]>2018-01-04 21:39:25 +0000
commitb36dc4d79f446ae69aeb85137663a4e0ca23eba2 (patch)
tree23d0ae5e94e874064143735c249a2ad2cb95ad16 /src/mime.h
parentadded .gitignore with mocfiles-dir and objectfiles-dir (diff)
downloadgpg4usb-b36dc4d79f446ae69aeb85137663a4e0ca23eba2.tar.gz
gpg4usb-b36dc4d79f446ae69aeb85137663a4e0ca23eba2.zip
put *.h and *.cpp to src-subdirectory
Diffstat (limited to 'src/mime.h')
-rw-r--r--src/mime.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/src/mime.h b/src/mime.h
new file mode 100644
index 0000000..df44647
--- /dev/null
+++ b/src/mime.h
@@ -0,0 +1,134 @@
+/*
+ * mime.h
+ *
+ * Copyright 2008 gpg4usb-team <[email protected]>
+ *
+ * This file is part of gpg4usb.
+ *
+ * Gpg4usb is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Gpg4usb 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. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gpg4usb. If not, see <http://www.gnu.org/licenses/>
+ */
+
+#ifndef __MIME_H__
+#define __MIME_H__
+
+#include <QHashIterator>
+#include <QHash>
+
+QT_BEGIN_NAMESPACE
+class QByteArray;
+class QDebug;
+class QTextCodec;
+QT_END_NAMESPACE
+
+class HeadElem
+{
+public:
+ QString name;
+ QString value;
+ QHash<QString, QString> params;
+
+ /* QDataStream & operator<<(QDataStream& Stream, const HeadElem& H)
+ {
+ return Stream << H.name << " : " << H.value;
+ }*/
+
+};
+
+class Header
+{
+public:
+ QList<HeadElem> headElems;
+
+ Header() {}
+
+ Header(QList <HeadElem> heads) {
+ headElems = heads;
+ }
+
+ void setHeader(QList <HeadElem> heads) {
+ headElems = heads;
+ }
+
+ QString getValue(QString key) {
+ foreach(HeadElem tmp, headElems) {
+ //qDebug() << "gv: " << tmp.name << ":" << tmp.value;
+ if (tmp.name == key)
+ return tmp.value;
+ }
+ return "";
+ }
+
+ QHash<QString, QString> getParams(QString key) {
+ foreach(HeadElem tmp, headElems) {
+ //qDebug() << "gv: " << tmp.name << ":" << tmp.value;
+ if (tmp.name == key)
+ //return tmp.value;
+ return tmp.params;
+ }
+ return *(new QHash<QString, QString>());
+ }
+
+ QString getParam(QString key, QString pKey) {
+ foreach(HeadElem tmp, headElems) {
+ //qDebug() << "gv: " << tmp.name << ":" << tmp.value;
+ if (tmp.name == key)
+ return tmp.params.value(pKey);
+ }
+ return "";
+ }
+
+
+};
+
+class MimePart
+{
+public:
+ Header header;
+ QByteArray body;
+
+
+
+ /* QDataStream & operator<<(QDataStream& Stream, const Part& P)
+ {
+ foreach(HeadElem tmp, header) {
+ Stream << tmp << "\n";
+ }
+ return Stream;
+ }*/
+};
+
+class Mime
+{
+
+public:
+ Mime(QByteArray *message); // Constructor
+ ~Mime(); // Destructor
+ static bool isMultipart(QByteArray *message);
+ static bool isMime(const QByteArray *message);
+ QList<MimePart> parts() {
+ return mPartList;
+ }
+ void splitParts(QByteArray *message);
+ static Header getHeader(const QByteArray *message);
+ static Header parseHeader(QByteArray *header);
+ static void quotedPrintableDecode(const QByteArray& in, QByteArray& out);
+
+private:
+ QByteArray *mMessage;
+ QByteArray *mBoundary;
+ QList<MimePart> mPartList;
+
+};
+
+#endif // __MIME_H__