Skip to content

Commit

Permalink
rework project
Browse files Browse the repository at this point in the history
  • Loading branch information
dobokirisame committed Jun 26, 2019
1 parent affc3e4 commit e131b8c
Show file tree
Hide file tree
Showing 12 changed files with 169 additions and 174 deletions.
17 changes: 7 additions & 10 deletions src/DeleteRequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,15 @@

namespace requests {

DeleteRequest::DeleteRequest()
: GetRequest() {
}

std::unique_ptr<QNetworkReply> DeleteRequest::sendRequest(QNetworkAccessManager *manager) {
if(address().isEmpty() || !manager)
return nullptr;
auto request = generateRequest(manager);
return std::unique_ptr<QNetworkReply>(manager->deleteResource(request));
if(!canSendRequest(manager)) {
return nullptr;
}
auto request = generateRequest(manager);
return std::unique_ptr<QNetworkReply>(manager->deleteResource(request));
}

QString DeleteRequest::requestName() const {
return QObject::tr("DeleteRequest");
}
return QObject::tr("DeleteRequest");
}
}//namespace requests
8 changes: 4 additions & 4 deletions src/DeleteRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ namespace requests {
class QHTTPREQUESTSSHARED_EXPORT DeleteRequest : public GetRequest
{
public:
DeleteRequest();
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
QString requestName() const override;
DeleteRequest() = default;
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
QString requestName() const override;
};
}
} //namespace requests
#endif // DELETEREQUEST_H
68 changes: 34 additions & 34 deletions src/GetRequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,59 +4,59 @@

namespace requests {

GetRequest::GetRequest()
: Request() {

}
namespace {
constexpr QStringView httpsPrefix{QStringViewLiteral("https")};
} // namespace

std::unique_ptr<QNetworkReply> GetRequest::sendRequest(QNetworkAccessManager *manager) {
if(address().isEmpty() || !manager)
return nullptr;
auto request = generateRequest(manager);
return std::unique_ptr<QNetworkReply>(manager->get(request));
if(!canSendRequest(manager)) {
return nullptr;
}
auto request = generateRequest(manager);
return std::unique_ptr<QNetworkReply>(manager->get(request));
}

void GetRequest::addParameter(const QString &parameterName, const QString &parameterValue) {
mParams.insert({parameterName, parameterValue});
mParameters.insert({parameterName, parameterValue});
}

QString GetRequest::parametersString() const {
return parametersString(mParams);
return parametersString(mParameters);
}

QString GetRequest::parametersString(const std::map<QString, QString> &parameters) const {
QString result;
for(const auto &param : parameters) {
result.append(param.first);
result.append('=');
result.append(param.second);
result.append('&');
}
return result;
QString result;
for(const auto &param : parameters) {
result.append(param.first);
result.append('=');
result.append(param.second);
result.append('&');
}
return result;
}

QNetworkRequest GetRequest::generateRequest(QNetworkAccessManager *manager) const {
QNetworkRequest request;
QUrl url(address());
if(address().startsWith("https")) {
manager->connectToHostEncrypted(address());
}

url.setQuery(parametersString());

QSslConfiguration sslConfiguration(QSslConfiguration::defaultConfiguration());
sslConfiguration.setProtocol(QSsl::SecureProtocols);
request.setSslConfiguration(sslConfiguration);
request.setUrl(url);
return request;
QNetworkRequest request;
QUrl url(address());
if(address().startsWith(httpsPrefix)) {
manager->connectToHostEncrypted(address());
}

url.setQuery(parametersString());

QSslConfiguration sslConfiguration(QSslConfiguration::defaultConfiguration());
sslConfiguration.setProtocol(QSsl::SecureProtocols);
request.setSslConfiguration(sslConfiguration);
request.setUrl(url);
return request;
}

std::map<QString, QString> GetRequest::parameters() const {
return mParams;
return mParameters;
}

QString GetRequest::requestName() const {
return QObject::tr("GetRequest");
return QObject::tr("GetRequest");
}

}
} //namespace requests
20 changes: 10 additions & 10 deletions src/GetRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,17 @@ namespace requests {
class QHTTPREQUESTSSHARED_EXPORT GetRequest : public Request
{
public:
GetRequest();
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
void addParameter(const QString &parameterName, const QString &parameterValue);
std::map<QString, QString> parameters() const;
QString requestName() const override;
GetRequest() = default;
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
void addParameter(const QString &parameterName, const QString &parameterValue);
std::map<QString, QString> parameters() const;
QString requestName() const override;
protected:
QString parametersString() const;
QString parametersString(const std::map<QString, QString> &parameters) const;
QNetworkRequest generateRequest(QNetworkAccessManager *manager) const;
QString parametersString() const;
QString parametersString(const std::map<QString, QString> &parameters) const;
QNetworkRequest generateRequest(QNetworkAccessManager *manager) const;
private:
std::map<QString, QString> mParams;
std::map<QString, QString> mParameters;
};
}
} //namespace requests
#endif // GETREQUEST_H
56 changes: 25 additions & 31 deletions src/PostJsonRequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,54 +4,48 @@

namespace requests {


PostJsonRequest::PostJsonRequest()
: GetRequest() {

}

std::unique_ptr<QNetworkReply> PostJsonRequest::sendRequest(QNetworkAccessManager *manager) {
if(address().isEmpty() || !manager)
return nullptr;
QNetworkRequest request;
QUrl url(address());
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setUrl(url);
return std::unique_ptr<QNetworkReply>(manager->post(request, QJsonDocument(jsonRequest()).toJson()));
if(!canSendRequest(manager)) {
return nullptr;
}
QNetworkRequest request;
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setUrl(destinationUrl());
return std::unique_ptr<QNetworkReply>(manager->post(request, QJsonDocument(jsonRequest()).toJson()));
}

QJsonObject PostJsonRequest::jsonRequest() const {
return jsonRequest(parameters());
return jsonRequest(parameters());
}

QJsonObject PostJsonRequest::jsonRequest(const std::map<QString, QString> &parameters) const {
QJsonObject result;
for(const auto &param : parameters) {
result.insert(param.first, param.second);
}
if(!filters().isEmpty()) {
QJsonObject enabledFilters;
for(auto filter : filters()) {
enabledFilters.insert(filter, "true");
}
result.insert(mFiltersKey, enabledFilters);
}
return result;
QJsonObject result;
for(const auto &param : parameters) {
result.insert(param.first, param.second);
}
if(!filters().isEmpty()) {
QJsonObject enabledFilters;
for(const auto &filter : filters()) {
enabledFilters.insert(filter, "true");
}
result.insert(mFiltersKey, enabledFilters);
}
return result;
}

QStringList PostJsonRequest::filters() const {
return mFilters;
return mFilters;
}

void PostJsonRequest::setFilters(const QStringList &filters) {
mFilters = filters;
mFilters = filters;
}

void PostJsonRequest::setFiltersKey(const QString &filtersKey) {
mFiltersKey = filtersKey;
mFiltersKey = filtersKey;
}

QString PostJsonRequest::requestName() const {
return QObject::tr("PostJsonRequest");
}
return QObject::tr("PostJsonRequest");
}
} //namespace requests
23 changes: 11 additions & 12 deletions src/PostJsonRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,21 @@

namespace requests {


class QHTTPREQUESTSSHARED_EXPORT PostJsonRequest : public GetRequest
{
public:
PostJsonRequest();
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
QStringList filters() const;
void setFilters(const QStringList &filters);
void setFiltersKey(const QString &filtersKey);
QString requestName() const override;
PostJsonRequest() = default;
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
QStringList filters() const;
void setFilters(const QStringList &filters);
void setFiltersKey(const QString &filtersKey);
QString requestName() const override;
protected:
QJsonObject jsonRequest() const;
QJsonObject jsonRequest(const std::map<QString, QString> &parameters) const;
QJsonObject jsonRequest() const;
QJsonObject jsonRequest(const std::map<QString, QString> &parameters) const;
private:
QStringList mFilters;
QString mFiltersKey;
QStringList mFilters;
QString mFiltersKey;
};
}
} //namespace requests
#endif // POSTJSONREQUEST_H
30 changes: 13 additions & 17 deletions src/PutJsonRequest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,27 @@

namespace requests {

PutJsonRequest::PutJsonRequest()
: PostJsonRequest() {

}

void PutJsonRequest::addGetParameter(const QString &parameterName, const QString &parameterValue) {
mGetParameters.insert({parameterName, parameterValue});
mGetParameters.insert({parameterName, parameterValue});
}

void PutJsonRequest::addPostParameter(const QString &parameterName, const QString &parameterValue) {
mPostParameters.insert({parameterName, parameterValue});
mPostParameters.insert({parameterName, parameterValue});
}

std::unique_ptr<QNetworkReply> PutJsonRequest::sendRequest(QNetworkAccessManager *manager) {
if(address().isEmpty() || !manager)
return nullptr;
QNetworkRequest request;
QUrl url(address());
url.setQuery(parametersString(mGetParameters));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setUrl(url);
return std::unique_ptr<QNetworkReply>(manager->put(request, QJsonDocument(jsonRequest(mPostParameters)).toJson()));
if(canSendRequest(manager)) {
return nullptr;
}
QNetworkRequest request;
QUrl url(address());
url.setQuery(parametersString(mGetParameters));
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
request.setUrl(url);
return std::unique_ptr<QNetworkReply>(manager->put(request, QJsonDocument(jsonRequest(mPostParameters)).toJson()));
}

QString PutJsonRequest::requestName() const {
return QObject::tr("PutJsonRequest");
}
return QObject::tr("PutJsonRequest");
}
} // namespace requests
16 changes: 8 additions & 8 deletions src/PutJsonRequest.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ namespace requests {
class QHTTPREQUESTSSHARED_EXPORT PutJsonRequest : public PostJsonRequest
{
public:
PutJsonRequest();
void addGetParameter(const QString &parameterName, const QString &parameterValue);
void addPostParameter(const QString &parameterName, const QString &parameterValue);
void addParameter(const QString &parameterName, const QString &parameterValue) = delete;
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
QString requestName() const override;
PutJsonRequest() = default;
void addGetParameter(const QString &parameterName, const QString &parameterValue);
void addPostParameter(const QString &parameterName, const QString &parameterValue);
void addParameter(const QString &parameterName, const QString &parameterValue) = delete;
std::unique_ptr<QNetworkReply> sendRequest(QNetworkAccessManager *manager) override;
QString requestName() const override;
private:
std::map<QString, QString> mGetParameters;
std::map<QString, QString> mPostParameters;
std::map<QString, QString> mGetParameters;
std::map<QString, QString> mPostParameters;
};
}
#endif // PUTJSONREQUEST_H
23 changes: 16 additions & 7 deletions src/Request.cpp
Original file line number Diff line number Diff line change
@@ -1,28 +1,37 @@
#include "Request.h"
#include <QUrl>

namespace requests {


Request::Request()
: mPort(80) {
}

Request::~Request() {
QUrl Request::destinationUrl() const {
QUrl result(address());
result.setPort(port());
return result;
}

bool Request::canSendRequest(QNetworkAccessManager *manager) const {
return !destinationUrl().isEmpty() &&
destinationUrl().isValid() &&
manager != nullptr;
}

QString Request::address() const {
return mAddress;
return mAddress;
}

void Request::setAddress(const QString &address) {
mAddress = address;
mAddress = address;
}

int Request::port() const {
return mPort;
return mPort;
}

void Request::setPort(int port) {
mPort = port;
}
mPort = port;
}
} //namespace requests
Loading

0 comments on commit e131b8c

Please sign in to comment.