1 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
3 This file is part of the Trojita Qt IMAP e-mail client,
4 http://trojita.flaska.net/
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2 of
9 the License or (at your option) version 3 or any later version
10 accepted by the membership of KDE e.V. (or its successor approved
11 by the membership of KDE e.V.), which shall act as a proxy
12 defined in Section 14 of version 3 of the license.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>.
22 #ifndef IMAP_ENCODERS_H
23 #define IMAP_ENCODERS_H
40 } Rfc2047StringCharacterSetType
;
42 /** @short Production type as per RFC 2047 chapter 5
44 These differ in the set of characters that are allowed to be sent unescaped.
46 enum class Rfc2047ProductionType
{
47 /** @short "An 'encoded-word' may replace a 'text' token..." -- case (1) */
49 /** @short "As a replacement for a 'word' entity within a 'phrase'" -- case (3) */
53 QString
decodeByteArray(const QByteArray
&encoded
, const QByteArray
&charset
);
55 QByteArray
quotedString(const QByteArray
&unquoted
, QuotedStringStyle style
= DoubleQuoted
);
56 QByteArray
encodeRFC2047Phrase(const QString
&text
);
58 QByteArray
encodeRFC2047StringWithAsciiPrefix(const QString
&text
);
59 QString
decodeRFC2047String(const QByteArray
&raw
);
61 QByteArray
encodeImapFolderName(const QString
&text
);
63 QString
decodeImapFolderName(const QByteArray
&raw
);
65 QByteArray
quotedPrintableDecode(const QByteArray
&raw
);
66 QByteArray
quotedPrintableEncode(const QByteArray
&raw
);
68 QString
extractRfc2231Param(const QMap
<QByteArray
, QByteArray
> ¶meters
, const QByteArray
&key
);
69 QByteArray
encodeRfc2231Parameter(const QByteArray
&key
, const QString
&value
);
71 QString
wrapFormatFlowed(const QString
&input
);
73 void decodeContentTransferEncoding(const QByteArray
&rawData
, const QByteArray
&encoding
, QByteArray
*outputData
);
76 #endif // IMAP_ENCODERS_H