aboutsummaryrefslogtreecommitdiff
path: root/libraries/katabasis
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2021-08-25 21:27:51 +0200
committerPetr Mrázek <peterix@gmail.com>2021-08-25 21:27:51 +0200
commit34a5459dcef1adb7eb355bb0f940eb212173857f (patch)
tree78fd16b1e6cb3c9baa6ce3b275f1cd194efc756c /libraries/katabasis
parent5c0e70e2376ec64e4ebf3c485decc2aa3d228527 (diff)
downloadPrismLauncher-34a5459dcef1adb7eb355bb0f940eb212173857f.tar.gz
PrismLauncher-34a5459dcef1adb7eb355bb0f940eb212173857f.tar.bz2
PrismLauncher-34a5459dcef1adb7eb355bb0f940eb212173857f.zip
NOISSUE cut down Requestor
Diffstat (limited to 'libraries/katabasis')
-rw-r--r--libraries/katabasis/include/katabasis/Requestor.h40
-rw-r--r--libraries/katabasis/src/Requestor.cpp141
2 files changed, 7 insertions, 174 deletions
diff --git a/libraries/katabasis/include/katabasis/Requestor.h b/libraries/katabasis/include/katabasis/Requestor.h
index 4bc0256a..de8016cb 100644
--- a/libraries/katabasis/include/katabasis/Requestor.h
+++ b/libraries/katabasis/include/katabasis/Requestor.h
@@ -20,47 +20,11 @@ class Requestor: public QObject {
public:
explicit Requestor(QNetworkAccessManager *manager, OAuth2 *authenticator, QObject *parent = 0);
~Requestor();
-
-
- /// Some services require the access token to be sent as a Authentication HTTP header
- /// and refuse requests with the access token in the query.
- /// This function allows to use or ignore the access token in the query.
- /// The default value of `true` means that the query will contain the access token.
- /// By setting the value to false, the query will not contain the access token.
- /// See:
- /// https://tools.ietf.org/html/draft-ietf-oauth-v2-bearer-16#section-4.3
- /// https://tools.ietf.org/html/rfc6750#section-2.3
-
- void setAddAccessTokenInQuery(bool value);
-
- /// Some services require the access token to be sent as a Authentication HTTP header.
- /// This is the case for Twitch and Mixer.
- /// When the access token expires and is refreshed, O2Requestor::retry() needs to update the Authentication HTTP header.
- /// In order to do so, O2Requestor needs to know the format of the Authentication HTTP header.
- void setAccessTokenInAuthenticationHTTPHeaderFormat(const QString &value);
public slots:
- /// Make a GET request.
- /// @return Request ID or -1 if there are too many requests in the queue.
int get(const QNetworkRequest &req, int timeout = 60*1000);
-
- /// Make a POST request.
- /// @return Request ID or -1 if there are too many requests in the queue.
int post(const QNetworkRequest &req, const QByteArray &data, int timeout = 60*1000);
- int post(const QNetworkRequest &req, QHttpMultiPart* data, int timeout = 60*1000);
-
- /// Make a PUT request.
- /// @return Request ID or -1 if there are too many requests in the queue.
- int put(const QNetworkRequest &req, const QByteArray &data, int timeout = 60*1000);
- int put(const QNetworkRequest &req, QHttpMultiPart* data, int timeout = 60*1000);
-
- /// Make a HEAD request.
- /// @return Request ID or -1 if there are too many requests in the queue.
- int head(const QNetworkRequest &req, int timeout = 60*1000);
- /// Make a custom request.
- /// @return Request ID or -1 if there are too many requests in the queue.
- int customRequest(const QNetworkRequest &req, const QByteArray &verb, const QByteArray &data, int timeout = 60*1000);
signals:
@@ -103,7 +67,6 @@ protected:
OAuth2 *authenticator_;
QNetworkRequest request_;
QByteArray data_;
- QHttpMultiPart* multipartData_;
QNetworkReply *reply_;
Status status_;
int id_;
@@ -111,9 +74,6 @@ protected:
QUrl url_;
ReplyList timedReplies_;
QNetworkReply::NetworkError error_;
- bool addAccessTokenInQuery_;
- QString accessTokenInAuthenticationHTTPHeaderFormat_;
- bool rawData_;
};
}
diff --git a/libraries/katabasis/src/Requestor.cpp b/libraries/katabasis/src/Requestor.cpp
index 917f2c07..53d77925 100644
--- a/libraries/katabasis/src/Requestor.cpp
+++ b/libraries/katabasis/src/Requestor.cpp
@@ -11,35 +11,27 @@
namespace Katabasis {
-Requestor::Requestor(QNetworkAccessManager *manager, OAuth2 *authenticator, QObject *parent): QObject(parent), reply_(NULL), status_(Idle), addAccessTokenInQuery_(true), rawData_(false) {
+Requestor::Requestor(QNetworkAccessManager *manager, OAuth2 *authenticator, QObject *parent): QObject(parent), reply_(NULL), status_(Idle) {
manager_ = manager;
authenticator_ = authenticator;
if (authenticator) {
timedReplies_.setIgnoreSslErrors(authenticator->ignoreSslErrors());
}
qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
- connect(authenticator, &OAuth2::refreshFinished, this, &Requestor::onRefreshFinished, Qt::QueuedConnection);
+ connect(authenticator, &OAuth2::refreshFinished, this, &Requestor::onRefreshFinished);
}
Requestor::~Requestor() {
}
-void Requestor::setAddAccessTokenInQuery(bool value) {
- addAccessTokenInQuery_ = value;
-}
-
-void Requestor::setAccessTokenInAuthenticationHTTPHeaderFormat(const QString &value) {
- accessTokenInAuthenticationHTTPHeaderFormat_ = value;
-}
-
int Requestor::get(const QNetworkRequest &req, int timeout/* = 60*1000*/) {
if (-1 == setup(req, QNetworkAccessManager::GetOperation)) {
return -1;
}
reply_ = manager_->get(request_);
timedReplies_.add(new Reply(reply_, timeout));
- connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
- connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
+ connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)));
+ connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()));
connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
return id_;
}
@@ -48,99 +40,16 @@ int Requestor::post(const QNetworkRequest &req, const QByteArray &data, int time
if (-1 == setup(req, QNetworkAccessManager::PostOperation)) {
return -1;
}
- rawData_ = true;
data_ = data;
reply_ = manager_->post(request_, data_);
timedReplies_.add(new Reply(reply_, timeout));
- connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
- connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
- connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
- connect(reply_, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(onUploadProgress(qint64,qint64)));
- return id_;
-}
-
-int Requestor::post(const QNetworkRequest & req, QHttpMultiPart* data, int timeout/* = 60*1000*/)
-{
- if (-1 == setup(req, QNetworkAccessManager::PostOperation)) {
- return -1;
- }
- rawData_ = false;
- multipartData_ = data;
- reply_ = manager_->post(request_, multipartData_);
- multipartData_->setParent(reply_);
- timedReplies_.add(new Reply(reply_, timeout));
- connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
- connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
- connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
- connect(reply_, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(onUploadProgress(qint64,qint64)));
- return id_;
-}
-
-int Requestor::put(const QNetworkRequest &req, const QByteArray &data, int timeout/* = 60*1000*/) {
- if (-1 == setup(req, QNetworkAccessManager::PutOperation)) {
- return -1;
- }
- rawData_ = true;
- data_ = data;
- reply_ = manager_->put(request_, data_);
- timedReplies_.add(new Reply(reply_, timeout));
- connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
- connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
+ connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)));
+ connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()));
connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
connect(reply_, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(onUploadProgress(qint64,qint64)));
return id_;
}
-int Requestor::put(const QNetworkRequest & req, QHttpMultiPart* data, int timeout/* = 60*1000*/)
-{
- if (-1 == setup(req, QNetworkAccessManager::PutOperation)) {
- return -1;
- }
- rawData_ = false;
- multipartData_ = data;
- reply_ = manager_->put(request_, multipartData_);
- multipartData_->setParent(reply_);
- timedReplies_.add(new Reply(reply_, timeout));
- connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
- connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
- connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
- connect(reply_, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(onUploadProgress(qint64,qint64)));
- return id_;
-}
-
-int Requestor::customRequest(const QNetworkRequest &req, const QByteArray &verb, const QByteArray &data, int timeout/* = 60*1000*/)
-{
- (void)timeout;
-
- if (-1 == setup(req, QNetworkAccessManager::CustomOperation, verb)) {
- return -1;
- }
- data_ = data;
- QBuffer * buffer = new QBuffer;
- buffer->setData(data_);
- reply_ = manager_->sendCustomRequest(request_, verb, buffer);
- buffer->setParent(reply_);
- timedReplies_.add(new Reply(reply_));
- connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
- connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
- connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
- connect(reply_, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(onUploadProgress(qint64,qint64)));
- return id_;
-}
-
-int Requestor::head(const QNetworkRequest &req, int timeout/* = 60*1000*/)
-{
- if (-1 == setup(req, QNetworkAccessManager::HeadOperation)) {
- return -1;
- }
- reply_ = manager_->head(request_);
- timedReplies_.add(new Reply(reply_, timeout));
- connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
- connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
- connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
- return id_;
-}
-
void Requestor::onRefreshFinished(QNetworkReply::NetworkError error) {
if (status_ != Requesting) {
qWarning() << "O2Requestor::onRefreshFinished: No pending request";
@@ -227,19 +136,8 @@ int Requestor::setup(const QNetworkRequest &req, QNetworkAccessManager::Operatio
url_ = req.url();
QUrl url = url_;
- if (addAccessTokenInQuery_) {
- QUrlQuery query(url);
- query.addQueryItem(OAUTH2_ACCESS_TOKEN, authenticator_->token());
- url.setQuery(query);
- }
-
request_.setUrl(url);
- // If the service require the access token to be sent as a Authentication HTTP header, we add the access token.
- if (!accessTokenInAuthenticationHTTPHeaderFormat_.isEmpty()) {
- request_.setRawHeader(HTTP_AUTHORIZATION_HEADER, accessTokenInAuthenticationHTTPHeaderFormat_.arg(authenticator_->token()).toLatin1());
- }
-
if (!verb.isEmpty()) {
request_.setRawHeader(HTTP_HTTP_HEADER, verb);
}
@@ -273,40 +171,15 @@ void Requestor::retry() {
reply_->disconnect(this);
reply_->deleteLater();
QUrl url = url_;
- if (addAccessTokenInQuery_) {
- QUrlQuery query(url);
- query.addQueryItem(OAUTH2_ACCESS_TOKEN, authenticator_->token());
- url.setQuery(query);
- }
request_.setUrl(url);
- // If the service require the access token to be sent as a Authentication HTTP header,
- // we update the access token when retrying.
- if(!accessTokenInAuthenticationHTTPHeaderFormat_.isEmpty()) {
- request_.setRawHeader(HTTP_AUTHORIZATION_HEADER, accessTokenInAuthenticationHTTPHeaderFormat_.arg(authenticator_->token()).toLatin1());
- }
-
status_ = ReRequesting;
switch (operation_) {
case QNetworkAccessManager::GetOperation:
reply_ = manager_->get(request_);
break;
case QNetworkAccessManager::PostOperation:
- reply_ = rawData_ ? manager_->post(request_, data_) : manager_->post(request_, multipartData_);
- break;
- case QNetworkAccessManager::CustomOperation:
- {
- QBuffer * buffer = new QBuffer;
- buffer->setData(data_);
- reply_ = manager_->sendCustomRequest(request_, request_.rawHeader(HTTP_HTTP_HEADER), buffer);
- buffer->setParent(reply_);
- }
- break;
- case QNetworkAccessManager::PutOperation:
- reply_ = rawData_ ? manager_->post(request_, data_) : manager_->put(request_, multipartData_);
- break;
- case QNetworkAccessManager::HeadOperation:
- reply_ = manager_->head(request_);
+ reply_ = manager_->post(request_, data_);
break;
default:
assert(!"Unspecified operation for request");