diff --git a/webserver/main.cpp b/webserver/main.cpp index 9fc2038..b9a7b64 100644 --- a/webserver/main.cpp +++ b/webserver/main.cpp @@ -9,7 +9,7 @@ #include #include -#include "utils.h" +#include "utils/jsonutils.h" #include "webplugin.h" #include "weblistener.h" #include "webapplication.h" diff --git a/webserver/webserver.pro b/webserver/webserver.pro index 60dff67..025e2c7 100644 --- a/webserver/webserver.pro +++ b/webserver/webserver.pro @@ -1,7 +1,7 @@ QT += core network QT -= gui widgets -DBLIBS += webserverlib +DBLIBS += dbcore webserverlib PROJECT_ROOT = ../.. diff --git a/webserverlib/utils.cpp b/webserverlib/utils.cpp deleted file mode 100644 index d0c685e..0000000 --- a/webserverlib/utils.cpp +++ /dev/null @@ -1,47 +0,0 @@ -#include "utils.h" - -#include -#include - -QHostAddress parseHostAddress(const QString &hostAddress) -{ - static const QMap specialHostAddresses { - { QStringLiteral("QHostAddress::Null"), QHostAddress::Null }, - { QStringLiteral("QHostAddress::Broadcast"), QHostAddress::Broadcast }, - { QStringLiteral("QHostAddress::LocalHost"), QHostAddress::LocalHost }, - { QStringLiteral("QHostAddress::LocalHostIPv6"), QHostAddress::LocalHostIPv6 }, - { QStringLiteral("QHostAddress::Any"), QHostAddress::Any }, - { QStringLiteral("QHostAddress::AnyIPv6"), QHostAddress::AnyIPv6 }, - { QStringLiteral("QHostAddress::AnyIPv4"), QHostAddress::AnyIPv4 } - }; - - const auto iter = specialHostAddresses.find(hostAddress); - if(iter != specialHostAddresses.constEnd()) - return *iter; - - return QHostAddress(hostAddress); -} - -template<> -QJsonDocument getJson(const QJsonDocument &document) -{ - return document; -} - -template<> -QJsonObject getJson(const QJsonDocument &document) -{ - if(!document.isObject()) - throw std::runtime_error("JSON document does not contain an object!"); - - return document.object(); -} - -template<> -QJsonArray getJson(const QJsonDocument &document) -{ - if(!document.isArray()) - throw std::runtime_error("JSON document does not contain an object!"); - - return document.array(); -} diff --git a/webserverlib/utils.h b/webserverlib/utils.h deleted file mode 100644 index 41ff562..0000000 --- a/webserverlib/utils.h +++ /dev/null @@ -1,60 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include - -QHostAddress parseHostAddress(const QString &hostAddress); - -template -T getJson(const QJsonDocument &document); - -template<> -QJsonDocument getJson(const QJsonDocument &document); - -template<> -QJsonObject getJson(const QJsonDocument &document); - -template<> -QJsonArray getJson(const QJsonDocument &document); - -template -T getJson(const QByteArray &byteArray); - -template -T getJson(QIODevice &device); - -template -T getJson(const QString &filename); - - - -template -T getJson(const QByteArray &byteArray) -{ - QJsonParseError error; - auto document = QJsonDocument::fromJson(byteArray, &error); - if(error.error != QJsonParseError::NoError) - throw std::runtime_error(QString("Could not parse json: %0").arg(error.errorString()).toStdString()); - - return getJson(document); -} - -template -T getJson(QIODevice &device) -{ - return getJson(device.readAll()); -} - -template -T getJson(const QString &filename) -{ - QFile file(filename); - if(!file.open(QIODevice::ReadOnly|QIODevice::Text)) - throw std::runtime_error(QString("Could not open json file %0: %1").arg(filename, file.errorString()).toStdString()); - - return getJson(file); -} diff --git a/webserverlib/weblistener.cpp b/webserverlib/weblistener.cpp index 42b580a..a923f0f 100644 --- a/webserverlib/weblistener.cpp +++ b/webserverlib/weblistener.cpp @@ -7,7 +7,7 @@ #include -#include "utils.h" +#include "utils/netutils.h" #include "httpclientconnection.h" WebListener::WebListener(const QJsonObject &config, const QHash &applications, QObject *parent) : diff --git a/webserverlib/webserverlib.pro b/webserverlib/webserverlib.pro index f335abd..a5b2d68 100644 --- a/webserverlib/webserverlib.pro +++ b/webserverlib/webserverlib.pro @@ -1,6 +1,8 @@ QT += core network QT -= gui widgets +DBLIBS += dbnetwork + PROJECT_ROOT = ../.. DEFINES += WEBSERVERLIB_LIBRARY @@ -9,7 +11,6 @@ SOURCES += \ weblistener.cpp \ webapplication.cpp \ webplugin.cpp \ - utils.cpp \ httpclientconnection.cpp \ httpcontainers.cpp @@ -17,7 +18,6 @@ HEADERS += webserverlib_global.h \ weblistener.h \ webapplication.h \ webplugin.h \ - utils.h \ httpclientconnection.h \ httpcontainers.h