diff options
Diffstat (limited to 'src/aopacket.cpp')
| -rw-r--r-- | src/aopacket.cpp | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/src/aopacket.cpp b/src/aopacket.cpp index 4a89e980..663edc52 100644 --- a/src/aopacket.cpp +++ b/src/aopacket.cpp @@ -1,42 +1,48 @@ #include "aopacket.h" -QString AOPacket::to_string(bool encoded) +QString AOPacket::encode(QString data) { - QStringList contents = m_contents; - if (encoded) { - escape(contents); - } - // Our packet is just the header by itself - if (contents.isEmpty()) { - return m_header + "#%"; - } - return m_header + "#" + contents.join("#") + "#%"; + return data.replace("#", "<num>").replace("%", "<percent>").replace("$", "<dollar>").replace("&", "<and>"); } -void AOPacket::net_encode() +QString AOPacket::decode(QString data) { - escape(m_contents); + return data.replace("<num>", "#").replace("<percent>", "%").replace("<dollar>", "$").replace("<and>", "&"); } -void AOPacket::net_decode() +AOPacket::AOPacket(QString header) + : m_header(header) +{} + +AOPacket::AOPacket(QString header, QStringList content) + : m_header(header) + , m_content(content) +{} + +QString AOPacket::get_header() { - unescape(m_contents); + return m_header; } -void AOPacket::escape(QStringList &contents) +QStringList &AOPacket::get_content() { - contents.replaceInStrings("#", "<num>") - .replaceInStrings("%", "<percent>") - .replaceInStrings("$", "<dollar>") - .replaceInStrings("&", "<and>"); - + return m_content; } -void AOPacket::unescape(QStringList &contents) +QString AOPacket::to_string(bool ensureEncoded) { - contents.replaceInStrings("<num>", "#") - .replaceInStrings("<percent>", "%") - .replaceInStrings("<dollar>", "$") - .replaceInStrings("<and>", "&"); + QString message = m_header; + if (!m_content.isEmpty()) + { + for (QString item : qAsConst(m_content)) + { + if (ensureEncoded) + { + item = encode(item); + } + message += "#" + item; + } + } + return message + "#%"; } |
