refs #930, moved multipart functions to database utils and added support for compression

This commit is contained in:
Klaus Basan
2017-04-07 00:47:01 +02:00
committed by Mathew Sutcliffe
parent 03cbdcddc2
commit 660798e43c
4 changed files with 65 additions and 45 deletions

View File

@@ -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

View File

@@ -15,6 +15,11 @@
#include "blackcore/blackcoreexport.h"
#include "blackcore/progress.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include <QHttpPart>
#include <QUrlQuery>
#include <QByteArray>
#include <QJsonArray>
#include <QJsonObject>
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

View File

@@ -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());

View File

@@ -15,10 +15,6 @@
#include "blackmisc/blackmiscexport.h"
#include "blackmisc/network/urllist.h"
#include <QByteArray>
#include <QHttpPart>
#include <QJsonArray>
#include <QJsonObject>
#include <QNetworkRequest>
#include <QString>
#include <QStringList>
@@ -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);