From 660798e43cddd3eb34053993c596b9fbf6dc634f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 7 Apr 2017 00:47:01 +0200 Subject: [PATCH] refs #930, moved multipart functions to database utils and added support for compression --- src/blackcore/db/databaseutils.cpp | 45 ++++++++++++++++++++++++++ src/blackcore/db/databaseutils.h | 20 ++++++++++++ src/blackmisc/network/networkutils.cpp | 29 ----------------- src/blackmisc/network/networkutils.h | 16 --------- 4 files changed, 65 insertions(+), 45 deletions(-) diff --git a/src/blackcore/db/databaseutils.cpp b/src/blackcore/db/databaseutils.cpp index 1cc7060fe..ef4cb21ff 100644 --- a/src/blackcore/db/databaseutils.cpp +++ b/src/blackcore/db/databaseutils.cpp @@ -306,5 +306,50 @@ namespace BlackCore { return sApp && sApp->hasWebDataServices() && sApp->getWebDataServices()->hasDbAircraftData(); } + + const QUrlQuery &CDatabaseUtils::getCompressedQuery() + { + static const QUrlQuery q("compressed=true"); + return q; + } + + QHttpPart CDatabaseUtils::getJsonTextMultipart(const QJsonObject &json, bool compress) + { + const QByteArray bytes(QJsonDocument(json).toJson(QJsonDocument::Compact)); + return getJsonTextMultipart(bytes, compress); + } + + QHttpPart CDatabaseUtils::getJsonTextMultipart(const QJsonArray &json, bool compress) + { + const QByteArray bytes(QJsonDocument(json).toJson(QJsonDocument::Compact)); + return getJsonTextMultipart(bytes, compress); + } + + QHttpPart CDatabaseUtils::getJsonTextMultipart(const QByteArray &bytes, bool compress) + { + static const QString name("form-data; name=\"swiftjson\""); + static const QVariant header(name); + QHttpPart textPart; + textPart.setHeader(QNetworkRequest::ContentDispositionHeader, header); + if (compress) + { + QByteArray ba = qCompress(bytes); + ba.remove(0, 4); // remove the non standard header + textPart.setBody(ba); + } + else + { + textPart.setBody(bytes); + } + return textPart; + } + + QHttpPart CDatabaseUtils::getMultipartWithDebugFlag() + { + QHttpPart textPartDebug; + textPartDebug.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"XDEBUG_SESSION_START\"")); + textPartDebug.setBody(QString("ECLIPSE_DBGP").toUtf8()); + return textPartDebug; + } } // ns } // ns diff --git a/src/blackcore/db/databaseutils.h b/src/blackcore/db/databaseutils.h index a04bb2f8c..4f1e5ba1a 100644 --- a/src/blackcore/db/databaseutils.h +++ b/src/blackcore/db/databaseutils.h @@ -15,6 +15,11 @@ #include "blackcore/blackcoreexport.h" #include "blackcore/progress.h" #include "blackmisc/simulation/aircraftmodel.h" +#include +#include +#include +#include +#include namespace BlackCore { @@ -69,6 +74,21 @@ namespace BlackCore //! Convenience function static bool hasDbAircraftData(); + + //! Mark as compressed + static const QUrlQuery &getCompressedQuery(); + + //! Multipart for JSON + static QHttpPart getJsonTextMultipart(const QJsonObject &json, bool compress); + + //! Multipart for JSON + static QHttpPart getJsonTextMultipart(const QJsonArray &json, bool compress); + + //! Multipart for JSON + static QHttpPart getJsonTextMultipart(const QByteArray &bytes, bool compress); + + //! Multipart with DEBUG FLAG for server + static QHttpPart getMultipartWithDebugFlag(); }; } // ns } // ns diff --git a/src/blackmisc/network/networkutils.cpp b/src/blackmisc/network/networkutils.cpp index 6a401b7fa..d3f88c64f 100644 --- a/src/blackmisc/network/networkutils.cpp +++ b/src/blackmisc/network/networkutils.cpp @@ -259,40 +259,11 @@ namespace BlackMisc } } - QHttpPart CNetworkUtils::getMultipartWithDebugFlag() - { - QHttpPart textPartDebug; - textPartDebug.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("form-data; name=\"XDEBUG_SESSION_START\"")); - textPartDebug.setBody(QString("ECLIPSE_DBGP").toUtf8()); - return textPartDebug; - } - void CNetworkUtils::addDebugFlag(QUrlQuery &qurl) { qurl.addQueryItem("XDEBUG_SESSION_START", "ECLIPSE_DBGP"); } - QHttpPart CNetworkUtils::getJsonTextMultipart(const QJsonObject &json) - { - const QByteArray bytes(QJsonDocument(json).toJson(QJsonDocument::Compact)); - return getJsonTextMultipart(bytes); - } - - QHttpPart CNetworkUtils::getJsonTextMultipart(const QJsonArray &json) - { - const QByteArray bytes(QJsonDocument(json).toJson(QJsonDocument::Compact)); - return getJsonTextMultipart(bytes); - } - - QHttpPart CNetworkUtils::getJsonTextMultipart(const QByteArray &bytes) - { - QHttpPart textPart; - QString name("form-data; name=\"swiftjson\""); - textPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant(name)); - textPart.setBody(bytes); - return textPart; - } - QNetworkRequest CNetworkUtils::getNetworkRequest(const CUrl &url, RequestType type) { QNetworkRequest request(url.toQUrl()); diff --git a/src/blackmisc/network/networkutils.h b/src/blackmisc/network/networkutils.h index 3dca84c7e..d5469e9ec 100644 --- a/src/blackmisc/network/networkutils.h +++ b/src/blackmisc/network/networkutils.h @@ -15,10 +15,6 @@ #include "blackmisc/blackmiscexport.h" #include "blackmisc/network/urllist.h" -#include -#include -#include -#include #include #include #include @@ -109,21 +105,9 @@ namespace BlackMisc //! Set swift client SSL certificate static void setSwiftClientSslCertificate(QNetworkRequest &request, const BlackMisc::Network::CUrlList &swiftSharedUrls); - //! Multipart with DEBUG FLAG for server - static QHttpPart getMultipartWithDebugFlag(); - //! Add debug flag static void addDebugFlag(QUrlQuery &qurl); - //! Multipart for JSON - static QHttpPart getJsonTextMultipart(const QJsonObject &json); - - //! Multipart for JSON - static QHttpPart getJsonTextMultipart(const QJsonArray &json); - - //! Multipart for JSON - static QHttpPart getJsonTextMultipart(const QByteArray &bytes); - //! Our tweaked network request static QNetworkRequest getNetworkRequest(const CUrl &url, RequestType type = Get);