NOISSUE cut down Requestor
This commit is contained in:
parent
5c0e70e237
commit
34a5459dce
@ -156,9 +156,7 @@ void AuthContext::doUserAuth() {
|
|||||||
QNetworkRequest request = QNetworkRequest(QUrl("https://user.auth.xboxlive.com/user/authenticate"));
|
QNetworkRequest request = QNetworkRequest(QUrl("https://user.auth.xboxlive.com/user/authenticate"));
|
||||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
||||||
request.setRawHeader("Accept", "application/json");
|
request.setRawHeader("Accept", "application/json");
|
||||||
auto *requestor = new Katabasis::Requestor(mgr, m_oauth2, this);
|
auto *requestor = new Requestor(mgr, m_oauth2, this);
|
||||||
requestor->setAddAccessTokenInQuery(false);
|
|
||||||
|
|
||||||
connect(requestor, &Requestor::finished, this, &AuthContext::onUserAuthDone);
|
connect(requestor, &Requestor::finished, this, &AuthContext::onUserAuthDone);
|
||||||
requestor->post(request, xbox_auth_data.toUtf8());
|
requestor->post(request, xbox_auth_data.toUtf8());
|
||||||
qDebug() << "First layer of XBox auth ... commencing.";
|
qDebug() << "First layer of XBox auth ... commencing.";
|
||||||
@ -338,8 +336,6 @@ void AuthContext::doSTSAuthMinecraft() {
|
|||||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
||||||
request.setRawHeader("Accept", "application/json");
|
request.setRawHeader("Accept", "application/json");
|
||||||
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
||||||
requestor->setAddAccessTokenInQuery(false);
|
|
||||||
|
|
||||||
connect(requestor, &Requestor::finished, this, &AuthContext::onSTSAuthMinecraftDone);
|
connect(requestor, &Requestor::finished, this, &AuthContext::onSTSAuthMinecraftDone);
|
||||||
requestor->post(request, xbox_auth_data.toUtf8());
|
requestor->post(request, xbox_auth_data.toUtf8());
|
||||||
qDebug() << "Getting Minecraft services STS token...";
|
qDebug() << "Getting Minecraft services STS token...";
|
||||||
@ -394,8 +390,6 @@ void AuthContext::doSTSAuthGeneric() {
|
|||||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
||||||
request.setRawHeader("Accept", "application/json");
|
request.setRawHeader("Accept", "application/json");
|
||||||
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
||||||
requestor->setAddAccessTokenInQuery(false);
|
|
||||||
|
|
||||||
connect(requestor, &Requestor::finished, this, &AuthContext::onSTSAuthGenericDone);
|
connect(requestor, &Requestor::finished, this, &AuthContext::onSTSAuthGenericDone);
|
||||||
requestor->post(request, xbox_auth_data.toUtf8());
|
requestor->post(request, xbox_auth_data.toUtf8());
|
||||||
qDebug() << "Getting generic STS token...";
|
qDebug() << "Getting generic STS token...";
|
||||||
@ -444,8 +438,6 @@ void AuthContext::doMinecraftAuth() {
|
|||||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
||||||
request.setRawHeader("Accept", "application/json");
|
request.setRawHeader("Accept", "application/json");
|
||||||
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
||||||
requestor->setAddAccessTokenInQuery(false);
|
|
||||||
|
|
||||||
connect(requestor, &Requestor::finished, this, &AuthContext::onMinecraftAuthDone);
|
connect(requestor, &Requestor::finished, this, &AuthContext::onMinecraftAuthDone);
|
||||||
requestor->post(request, data.toUtf8());
|
requestor->post(request, data.toUtf8());
|
||||||
qDebug() << "Getting Minecraft access token...";
|
qDebug() << "Getting Minecraft access token...";
|
||||||
@ -538,8 +530,6 @@ void AuthContext::doXBoxProfile() {
|
|||||||
request.setRawHeader("x-xbl-contract-version", "3");
|
request.setRawHeader("x-xbl-contract-version", "3");
|
||||||
request.setRawHeader("Authorization", QString("XBL3.0 x=%1;%2").arg(m_data->userToken.extra["uhs"].toString(), m_data->xboxApiToken.token).toUtf8());
|
request.setRawHeader("Authorization", QString("XBL3.0 x=%1;%2").arg(m_data->userToken.extra["uhs"].toString(), m_data->xboxApiToken.token).toUtf8());
|
||||||
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
||||||
requestor->setAddAccessTokenInQuery(false);
|
|
||||||
|
|
||||||
connect(requestor, &Requestor::finished, this, &AuthContext::onXBoxProfileDone);
|
connect(requestor, &Requestor::finished, this, &AuthContext::onXBoxProfileDone);
|
||||||
requestor->get(request);
|
requestor->get(request);
|
||||||
qDebug() << "Getting Xbox profile...";
|
qDebug() << "Getting Xbox profile...";
|
||||||
@ -675,8 +665,6 @@ void AuthContext::doMinecraftProfile() {
|
|||||||
request.setRawHeader("Authorization", QString("Bearer %1").arg(m_data->yggdrasilToken.token).toUtf8());
|
request.setRawHeader("Authorization", QString("Bearer %1").arg(m_data->yggdrasilToken.token).toUtf8());
|
||||||
|
|
||||||
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
||||||
requestor->setAddAccessTokenInQuery(false);
|
|
||||||
|
|
||||||
connect(requestor, &Requestor::finished, this, &AuthContext::onMinecraftProfileDone);
|
connect(requestor, &Requestor::finished, this, &AuthContext::onMinecraftProfileDone);
|
||||||
requestor->get(request);
|
requestor->get(request);
|
||||||
}
|
}
|
||||||
@ -710,7 +698,6 @@ void AuthContext::doGetSkin() {
|
|||||||
auto url = QUrl(m_data->minecraftProfile.skin.url);
|
auto url = QUrl(m_data->minecraftProfile.skin.url);
|
||||||
QNetworkRequest request = QNetworkRequest(url);
|
QNetworkRequest request = QNetworkRequest(url);
|
||||||
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
Requestor *requestor = new Requestor(mgr, m_oauth2, this);
|
||||||
requestor->setAddAccessTokenInQuery(false);
|
|
||||||
connect(requestor, &Requestor::finished, this, &AuthContext::onSkinDone);
|
connect(requestor, &Requestor::finished, this, &AuthContext::onSkinDone);
|
||||||
requestor->get(request);
|
requestor->get(request);
|
||||||
}
|
}
|
||||||
|
@ -73,7 +73,7 @@ AccountListPage::AccountListPage(QWidget *parent)
|
|||||||
// Xbox authentication won't work without a client identifier, so disable the button
|
// Xbox authentication won't work without a client identifier, so disable the button
|
||||||
// if the build didn't specify one (GH-4012)
|
// if the build didn't specify one (GH-4012)
|
||||||
if (BuildConfig.MSA_CLIENT_ID.isEmpty()) {
|
if (BuildConfig.MSA_CLIENT_ID.isEmpty()) {
|
||||||
ui->actionAddMicrosoft->setEnabled(false);
|
ui->actionAddMicrosoft->setVisible(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,47 +20,11 @@ class Requestor: public QObject {
|
|||||||
public:
|
public:
|
||||||
explicit Requestor(QNetworkAccessManager *manager, OAuth2 *authenticator, QObject *parent = 0);
|
explicit Requestor(QNetworkAccessManager *manager, OAuth2 *authenticator, QObject *parent = 0);
|
||||||
~Requestor();
|
~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:
|
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);
|
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, 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:
|
signals:
|
||||||
|
|
||||||
@ -103,7 +67,6 @@ protected:
|
|||||||
OAuth2 *authenticator_;
|
OAuth2 *authenticator_;
|
||||||
QNetworkRequest request_;
|
QNetworkRequest request_;
|
||||||
QByteArray data_;
|
QByteArray data_;
|
||||||
QHttpMultiPart* multipartData_;
|
|
||||||
QNetworkReply *reply_;
|
QNetworkReply *reply_;
|
||||||
Status status_;
|
Status status_;
|
||||||
int id_;
|
int id_;
|
||||||
@ -111,9 +74,6 @@ protected:
|
|||||||
QUrl url_;
|
QUrl url_;
|
||||||
ReplyList timedReplies_;
|
ReplyList timedReplies_;
|
||||||
QNetworkReply::NetworkError error_;
|
QNetworkReply::NetworkError error_;
|
||||||
bool addAccessTokenInQuery_;
|
|
||||||
QString accessTokenInAuthenticationHTTPHeaderFormat_;
|
|
||||||
bool rawData_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -11,35 +11,27 @@
|
|||||||
|
|
||||||
namespace Katabasis {
|
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;
|
manager_ = manager;
|
||||||
authenticator_ = authenticator;
|
authenticator_ = authenticator;
|
||||||
if (authenticator) {
|
if (authenticator) {
|
||||||
timedReplies_.setIgnoreSslErrors(authenticator->ignoreSslErrors());
|
timedReplies_.setIgnoreSslErrors(authenticator->ignoreSslErrors());
|
||||||
}
|
}
|
||||||
qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
|
qRegisterMetaType<QNetworkReply::NetworkError>("QNetworkReply::NetworkError");
|
||||||
connect(authenticator, &OAuth2::refreshFinished, this, &Requestor::onRefreshFinished, Qt::QueuedConnection);
|
connect(authenticator, &OAuth2::refreshFinished, this, &Requestor::onRefreshFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
Requestor::~Requestor() {
|
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*/) {
|
int Requestor::get(const QNetworkRequest &req, int timeout/* = 60*1000*/) {
|
||||||
if (-1 == setup(req, QNetworkAccessManager::GetOperation)) {
|
if (-1 == setup(req, QNetworkAccessManager::GetOperation)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
reply_ = manager_->get(request_);
|
reply_ = manager_->get(request_);
|
||||||
timedReplies_.add(new Reply(reply_, timeout));
|
timedReplies_.add(new Reply(reply_, timeout));
|
||||||
connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
|
connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)));
|
||||||
connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
|
connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()));
|
||||||
connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
|
connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
|
||||||
return id_;
|
return id_;
|
||||||
}
|
}
|
||||||
@ -48,99 +40,16 @@ int Requestor::post(const QNetworkRequest &req, const QByteArray &data, int time
|
|||||||
if (-1 == setup(req, QNetworkAccessManager::PostOperation)) {
|
if (-1 == setup(req, QNetworkAccessManager::PostOperation)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
rawData_ = true;
|
|
||||||
data_ = data;
|
data_ = data;
|
||||||
reply_ = manager_->post(request_, data_);
|
reply_ = manager_->post(request_, data_);
|
||||||
timedReplies_.add(new Reply(reply_, timeout));
|
timedReplies_.add(new Reply(reply_, timeout));
|
||||||
connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)), Qt::QueuedConnection);
|
connect(reply_, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(onRequestError(QNetworkReply::NetworkError)));
|
||||||
connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()), Qt::QueuedConnection);
|
connect(reply_, SIGNAL(finished()), this, SLOT(onRequestFinished()));
|
||||||
connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
|
connect(reply_, &QNetworkReply::sslErrors, this, &Requestor::onSslErrors);
|
||||||
connect(reply_, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(onUploadProgress(qint64,qint64)));
|
connect(reply_, SIGNAL(uploadProgress(qint64,qint64)), this, SLOT(onUploadProgress(qint64,qint64)));
|
||||||
return id_;
|
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_, &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) {
|
void Requestor::onRefreshFinished(QNetworkReply::NetworkError error) {
|
||||||
if (status_ != Requesting) {
|
if (status_ != Requesting) {
|
||||||
qWarning() << "O2Requestor::onRefreshFinished: No pending request";
|
qWarning() << "O2Requestor::onRefreshFinished: No pending request";
|
||||||
@ -227,19 +136,8 @@ int Requestor::setup(const QNetworkRequest &req, QNetworkAccessManager::Operatio
|
|||||||
url_ = req.url();
|
url_ = req.url();
|
||||||
|
|
||||||
QUrl url = url_;
|
QUrl url = url_;
|
||||||
if (addAccessTokenInQuery_) {
|
|
||||||
QUrlQuery query(url);
|
|
||||||
query.addQueryItem(OAUTH2_ACCESS_TOKEN, authenticator_->token());
|
|
||||||
url.setQuery(query);
|
|
||||||
}
|
|
||||||
|
|
||||||
request_.setUrl(url);
|
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()) {
|
if (!verb.isEmpty()) {
|
||||||
request_.setRawHeader(HTTP_HTTP_HEADER, verb);
|
request_.setRawHeader(HTTP_HTTP_HEADER, verb);
|
||||||
}
|
}
|
||||||
@ -273,40 +171,15 @@ void Requestor::retry() {
|
|||||||
reply_->disconnect(this);
|
reply_->disconnect(this);
|
||||||
reply_->deleteLater();
|
reply_->deleteLater();
|
||||||
QUrl url = url_;
|
QUrl url = url_;
|
||||||
if (addAccessTokenInQuery_) {
|
|
||||||
QUrlQuery query(url);
|
|
||||||
query.addQueryItem(OAUTH2_ACCESS_TOKEN, authenticator_->token());
|
|
||||||
url.setQuery(query);
|
|
||||||
}
|
|
||||||
request_.setUrl(url);
|
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;
|
status_ = ReRequesting;
|
||||||
switch (operation_) {
|
switch (operation_) {
|
||||||
case QNetworkAccessManager::GetOperation:
|
case QNetworkAccessManager::GetOperation:
|
||||||
reply_ = manager_->get(request_);
|
reply_ = manager_->get(request_);
|
||||||
break;
|
break;
|
||||||
case QNetworkAccessManager::PostOperation:
|
case QNetworkAccessManager::PostOperation:
|
||||||
reply_ = rawData_ ? manager_->post(request_, data_) : manager_->post(request_, multipartData_);
|
reply_ = manager_->post(request_, data_);
|
||||||
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_);
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(!"Unspecified operation for request");
|
assert(!"Unspecified operation for request");
|
||||||
|
Loading…
Reference in New Issue
Block a user