summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/downloadmanager.cpp4
-rw-r--r--src/downloadmanager.h2
-rw-r--r--src/mainwindow.cpp10
-rw-r--r--src/mainwindow.h2
-rw-r--r--src/modinforegular.cpp6
-rw-r--r--src/modinforegular.h2
-rw-r--r--src/nexusinterface.cpp70
-rw-r--r--src/nexusinterface.h4
8 files changed, 55 insertions, 45 deletions
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index 10ebe3e7..1b097bdb 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -532,7 +532,7 @@ void DownloadManager::startDownload(QNetworkReply *reply, DownloadInfo *newDownl
}
connect(newDownload->m_Reply, SIGNAL(downloadProgress(qint64, qint64)), this, SLOT(downloadProgress(qint64, qint64)));
- connect(newDownload->m_Reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(downloadError(QNetworkReply::NetworkError)));
+ connect(newDownload->m_Reply, SIGNAL(errorOccurred(QNetworkReply::NetworkError)), this, SLOT(downloadError(QNetworkReply::NetworkError)));
connect(newDownload->m_Reply, SIGNAL(readyRead()), this, SLOT(downloadReadyRead()));
connect(newDownload->m_Reply, SIGNAL(metaDataChanged()), this, SLOT(metaDataChanged()));
@@ -2020,7 +2020,7 @@ void DownloadManager::nxmFileInfoFromMd5Available(QString gameName, QVariant use
}
-void DownloadManager::nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorString)
+void DownloadManager::nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, int errorCode, const QString &errorString)
{
std::set<int>::iterator idIter = m_RequestIDs.find(requestID);
if (idIter == m_RequestIDs.end()) {
diff --git a/src/downloadmanager.h b/src/downloadmanager.h
index 5e126f4b..ba9f4b5c 100644
--- a/src/downloadmanager.h
+++ b/src/downloadmanager.h
@@ -473,7 +473,7 @@ public slots:
void nxmFileInfoFromMd5Available(QString gameName, QVariant userData, QVariant resultData, int requestID);
- void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorString);
+ void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, int errorCode, const QString &errorString);
void managedGameChanged(MOBase::IPluginGame const *gamePlugin);
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index e792abf5..30148158 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -386,8 +386,8 @@ MainWindow::MainWindow(Settings &settings
connect(&m_OrganizerCore, &OrganizerCore::directoryStructureReady,
this, &MainWindow::onDirectoryStructureChanged);
- connect(m_OrganizerCore.directoryRefresher(), SIGNAL(progress(DirectoryRefreshProgress*)),
- this, SLOT(refresherProgress(DirectoryRefreshProgress*)));
+ connect(m_OrganizerCore.directoryRefresher(), SIGNAL(progress(const DirectoryRefreshProgress*)),
+ this, SLOT(refresherProgress(const DirectoryRefreshProgress*)));
connect(m_OrganizerCore.directoryRefresher(), SIGNAL(error(QString)), this, SLOT(showError(QString)));
connect(&m_OrganizerCore.settings(), SIGNAL(languageChanged(QString)), this, SLOT(languageChange(QString)));
@@ -3217,9 +3217,9 @@ void MainWindow::nxmDownloadURLs(QString, int, int, QVariant, QVariant resultDat
m_OrganizerCore.settings().network().updateServers(servers);
}
-void MainWindow::nxmRequestFailed(QString gameName, int modID, int, QVariant, int, QNetworkReply::NetworkError error, const QString &errorString)
+void MainWindow::nxmRequestFailed(QString gameName, int modID, int, QVariant, int, int errorCode, const QString &errorString)
{
- if (error == QNetworkReply::ContentAccessDenied || error == QNetworkReply::ContentNotFoundError) {
+ if (errorCode == QNetworkReply::ContentAccessDenied || errorCode == QNetworkReply::ContentNotFoundError) {
log::debug("{}", tr("Mod ID %1 no longer seems to be available on Nexus.").arg(modID));
// update last checked timestamp on orphaned mods as well to avoid repeating requests
@@ -3236,7 +3236,7 @@ void MainWindow::nxmRequestFailed(QString gameName, int modID, int, QVariant, in
mod->setLastNexusQuery(QDateTime::currentDateTimeUtc());
}
} else {
- MessageDialog::showMessage(tr("Request to Nexus failed: %1").arg(errorString), this);
+ MessageDialog::showMessage(tr("Error %1: Request to Nexus failed: %2").arg(errorCode).arg(errorString), this);
}
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 039f64ac..3b32b229 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -351,7 +351,7 @@ private slots:
void nxmEndorsementToggled(QString, int, QVariant, QVariant resultData, int);
void nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int);
void nxmDownloadURLs(QString, int modID, int fileID, QVariant userData, QVariant resultData, int requestID);
- void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorString);
+ void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, int errorCode, const QString &errorString);
void onRequestsChanged(const APIStats& stats, const APIUserAccount& user);
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index f3dd1caa..eb84a2ad 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -60,8 +60,8 @@ ModInfoRegular::ModInfoRegular(const QDir &path, OrganizerCore& core)
, this, SLOT(nxmEndorsementToggled(QString,int,QVariant,QVariant)));
connect(&m_NexusBridge, SIGNAL(trackingToggled(QString,int,QVariant,bool))
, this, SLOT(nxmTrackingToggled(QString,int,QVariant,bool)));
- connect(&m_NexusBridge, SIGNAL(requestFailed(QString,int,int,QVariant,QNetworkReply::NetworkError,QString))
- , this, SLOT(nxmRequestFailed(QString,int,int,QVariant,QNetworkReply::NetworkError,QString)));
+ connect(&m_NexusBridge, SIGNAL(requestFailed(QString,int,int,QVariant,int,QString))
+ , this, SLOT(nxmRequestFailed(QString,int,int,QVariant,int,QString)));
}
@@ -371,7 +371,7 @@ void ModInfoRegular::nxmTrackingToggled(QString, int, QVariant, bool tracked)
}
-void ModInfoRegular::nxmRequestFailed(QString, int, int, QVariant userData, QNetworkReply::NetworkError error, const QString &errorMessage)
+void ModInfoRegular::nxmRequestFailed(QString, int, int, QVariant userData, int errorCode, const QString &errorMessage)
{
QString fullMessage = errorMessage;
if (userData.canConvert<int>() && (userData.toInt() == 1)) {
diff --git a/src/modinforegular.h b/src/modinforegular.h
index 24f5cf9c..ef91ba69 100644
--- a/src/modinforegular.h
+++ b/src/modinforegular.h
@@ -406,7 +406,7 @@ private slots:
void nxmDescriptionAvailable(QString, int modID, QVariant userData, QVariant resultData);
void nxmEndorsementToggled(QString, int, QVariant userData, QVariant resultData);
void nxmTrackingToggled(QString, int, QVariant userData, bool tracked);
- void nxmRequestFailed(QString, int modID, int fileID, QVariant userData, QNetworkReply::NetworkError error, const QString &errorMessage);
+ void nxmRequestFailed(QString, int modID, int fileID, QVariant userData, int errorCode, const QString &errorMessage);
protected:
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) {
diff --git a/src/nexusinterface.h b/src/nexusinterface.h
index e188d0bf..8e33d51f 100644
--- a/src/nexusinterface.h
+++ b/src/nexusinterface.h
@@ -117,7 +117,7 @@ public slots:
void nxmEndorsementToggled(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
void nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int requestID);
void nxmTrackingToggled(QString gameName, int modID, QVariant userData, bool tracked, int requestID);
- void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorMessage);
+ void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, int errorCode, const QString &errorMessage);
private:
@@ -479,7 +479,7 @@ signals:
void nxmEndorsementToggled(QString gameName, int modID, QVariant userData, QVariant resultData, int requestID);
void nxmTrackedModsAvailable(QVariant userData, QVariant resultData, int requestID);
void nxmTrackingToggled(QString gameName, int modID, QVariant userData, bool tracked, int requestID);
- void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, QNetworkReply::NetworkError error, const QString &errorString);
+ void nxmRequestFailed(QString gameName, int modID, int fileID, QVariant userData, int requestID, int errorCode, const QString &errorString);
void requestsChanged(const APIStats& stats, const APIUserAccount& user);
public slots: