summaryrefslogtreecommitdiff
path: root/src/nexusinterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/nexusinterface.cpp')
-rw-r--r--src/nexusinterface.cpp70
1 files changed, 40 insertions, 30 deletions
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index 5bda2b93..069a2256 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -179,12 +179,12 @@ void NexusBridge::nxmTrackingToggled(QString gameName, int modID, QVariant userD
}
}
-void NexusBridge::nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorMessage)
+void NexusBridge::nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, int errorCode, const QString &errorMessage)
{
std::set<int>::iterator iter = m_RequestIDs.find(requestID);
if (iter != m_RequestIDs.end()) {
m_RequestIDs.erase(iter);
- emit requestFailed(gameName, modID, fileID, userData, error, errorMessage);
+ emit requestFailed(gameName, modID, fileID, userData, errorCode, errorMessage);
}
}
@@ -440,8 +440,8 @@ int NexusInterface::requestDescription(QString gameName, int modID, QObject *rec
connect(this, SIGNAL(nxmDescriptionAvailable(QString, int, QVariant, QVariant, int)),
receiver, SLOT(nxmDescriptionAvailable(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -461,8 +461,8 @@ int NexusInterface::requestModInfo(QString gameName, int modID, QObject *receive
connect(this, SIGNAL(nxmModInfoAvailable(QString, int, QVariant, QVariant, int)),
receiver, SLOT(nxmModInfoAvailable(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -482,8 +482,8 @@ int NexusInterface::requestUpdateInfo(QString gameName, NexusInterface::UpdatePe
connect(this, SIGNAL(nxmUpdateInfoAvailable(QString, QVariant, QVariant, int)),
receiver, SLOT(nxmUpdateInfoAvailable(QString, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -509,8 +509,8 @@ int NexusInterface::requestUpdates(const int &modID, QObject *receiver, QVariant
connect(this, SIGNAL(nxmUpdatesAvailable(QString, int, QVariant, QVariant, int)),
receiver, SLOT(nxmUpdatesAvailable(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -544,8 +544,8 @@ int NexusInterface::requestFiles(QString gameName, int modID, QObject *receiver,
connect(this, SIGNAL(nxmFilesAvailable(QString, int, QVariant, QVariant, int)),
receiver, SLOT(nxmFilesAvailable(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -566,8 +566,8 @@ int NexusInterface::requestFileInfo(QString gameName, int modID, int fileID, QOb
connect(this, SIGNAL(nxmFileInfoAvailable(QString, int, int, QVariant, QVariant, int)),
receiver, SLOT(nxmFileInfoAvailable(QString, int, int, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -583,8 +583,8 @@ int NexusInterface::requestDownloadURL(QString gameName, int modID, int fileID,
connect(this, SIGNAL(nxmDownloadURLsAvailable(QString,int,int,QVariant,QVariant,int)),
receiver, SLOT(nxmDownloadURLsAvailable(QString,int,int,QVariant,QVariant,int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString,int,int,QVariant,int,QNetworkReply::NetworkError,QString)),
- receiver, SLOT(nxmRequestFailed(QString,int,int,QVariant,int,QNetworkReply::NetworkError,QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString,int,int,QVariant,int,int,QString)),
+ receiver, SLOT(nxmRequestFailed(QString,int,int,QVariant,int,int,QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -598,8 +598,8 @@ int NexusInterface::requestEndorsementInfo(QObject *receiver, QVariant userData,
connect(this, SIGNAL(nxmEndorsementsAvailable(QVariant, QVariant, int)),
receiver, SLOT(nxmEndorsementsAvailable(QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -620,8 +620,8 @@ int NexusInterface::requestToggleEndorsement(QString gameName, int modID, QStrin
connect(this, SIGNAL(nxmEndorsementToggled(QString, int, QVariant, QVariant, int)),
receiver, SLOT(nxmEndorsementToggled(QString, int, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -635,8 +635,8 @@ int NexusInterface::requestTrackingInfo(QObject *receiver, QVariant userData, co
connect(this, SIGNAL(nxmTrackedModsAvailable(QVariant, QVariant, int)),
receiver, SLOT(nxmTrackedModsAvailable(QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -657,8 +657,8 @@ int NexusInterface::requestToggleTracking(QString gameName, int modID, bool trac
connect(this, SIGNAL(nxmTrackingToggled(QString, int, QVariant, bool, int)),
receiver, SLOT(nxmTrackingToggled(QString, int, QVariant, bool, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -676,8 +676,8 @@ int NexusInterface::requestInfoFromMd5(QString gameName, QByteArray &hash, QObje
connect(this, SIGNAL(nxmFileInfoFromMd5Available(QString, QVariant, QVariant, int)),
receiver, SLOT(nxmFileInfoFromMd5Available(QString, QVariant, QVariant, int)), Qt::UniqueConnection);
- connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)),
- receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, QNetworkReply::NetworkError, QString)), Qt::UniqueConnection);
+ connect(this, SIGNAL(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)),
+ receiver, SLOT(nxmRequestFailed(QString, int, int, QVariant, int, int, QString)), Qt::UniqueConnection);
nextRequest();
return requestInfo.m_ID;
@@ -842,7 +842,7 @@ void NexusInterface::nextRequest()
connect(info.m_Reply, SIGNAL(finished()), this, SLOT(requestFinished()));
if (!info.m_IgnoreGenericErrorHandler)
- connect(info.m_Reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError)));
+ connect(info.m_Reply, SIGNAL(errorOccurred(QNetworkReply::NetworkError)), this, SLOT(requestError(QNetworkReply::NetworkError)));
connect(info.m_Timeout, SIGNAL(timeout()), this, SLOT(requestTimeout()));
info.m_Timeout->start();
m_ActiveRequest.push_back(info);
@@ -861,6 +861,7 @@ void NexusInterface::requestFinished(std::list<NXMRequestInfo>::iterator iter)
auto error = reply->error();
if (error != QNetworkReply::NoError) {
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
+ QString errorMsg = reply->errorString();
if (iter->m_AllowedErrors.contains(error) && iter->m_AllowedErrors[error].contains(statusCode)) {
// These errors are allows to silently happen. They should be handled in nxmRequestFailed below.
@@ -875,11 +876,20 @@ void NexusInterface::requestFinished(std::list<NXMRequestInfo>::iterator iter)
}
emit requestsChanged(getAPIStats(), m_User);
- log::warn("Error: {}", reply->errorString());
+ log::warn("Error: {}", errorMsg);
} else {
- log::warn("request failed: {}", reply->errorString());
+ QByteArray data = reply->readAll();
+ if (!data.isEmpty()) {
+ QJsonDocument responseDoc = QJsonDocument::fromJson(data);
+ if (!responseDoc.isNull()) {
+ auto result = responseDoc.toVariant().toMap();
+ auto error = result.find("error");
+ if (error != result.end())
+ errorMsg = result.value("error").toString();
+ }
+ }
}
- emit nxmRequestFailed(iter->m_GameName, iter->m_ModID, iter->m_FileID, iter->m_UserData, iter->m_ID, reply->error(), reply->errorString());
+ emit nxmRequestFailed(iter->m_GameName, iter->m_ModID, iter->m_FileID, iter->m_UserData, iter->m_ID, statusCode, errorMsg);
} else {
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (statusCode == 301) {