summaryrefslogtreecommitdiff
path: root/src/nexusinterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/nexusinterface.cpp')
-rw-r--r--src/nexusinterface.cpp263
1 files changed, 111 insertions, 152 deletions
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp
index 00ecdae3..cece6745 100644
--- a/src/nexusinterface.cpp
+++ b/src/nexusinterface.cpp
@@ -868,101 +868,72 @@ void NexusInterface::nextRequest()
if (!info.m_Reroute) {
bool hasParams = false;
switch (info.m_Type) {
- case NXMRequestInfo::TYPE_DESCRIPTION:
- case NXMRequestInfo::TYPE_MODINFO: {
- url = QString("%1/games/%2/mods/%3")
- .arg(info.m_URL)
- .arg(info.m_GameName)
- .arg(info.m_ModID);
- } break;
- case NXMRequestInfo::TYPE_CHECKUPDATES: {
- QString period;
- switch (info.m_UpdatePeriod) {
- case UpdatePeriod::DAY:
- period = "1d";
- break;
- case UpdatePeriod::WEEK:
- period = "1w";
- break;
- case UpdatePeriod::MONTH:
- period = "1m";
- break;
- }
- url = QString("%1/games/%2/mods/updated?period=%3")
- .arg(info.m_URL)
- .arg(info.m_GameName)
- .arg(period);
- } break;
- case NXMRequestInfo::TYPE_FILES:
- case NXMRequestInfo::TYPE_GETUPDATES: {
- url = QString("%1/games/%2/mods/%3/files")
- .arg(info.m_URL)
- .arg(info.m_GameName)
- .arg(info.m_ModID);
- } break;
- case NXMRequestInfo::TYPE_FILEINFO: {
- url = QString("%1/games/%2/mods/%3/files/%4")
- .arg(info.m_URL)
- .arg(info.m_GameName)
- .arg(info.m_ModID)
- .arg(info.m_FileID);
- } break;
- case NXMRequestInfo::TYPE_DOWNLOADURL: {
- ModRepositoryFileInfo* fileInfo = qobject_cast<ModRepositoryFileInfo*>(
- qvariant_cast<QObject*>(info.m_UserData));
- if (m_User.type() == APIUserAccountTypes::Premium) {
- url = QString("%1/games/%2/mods/%3/files/%4/download_link")
- .arg(info.m_URL)
- .arg(info.m_GameName)
- .arg(info.m_ModID)
- .arg(info.m_FileID);
- } else if (!fileInfo->nexusKey.isEmpty() && fileInfo->nexusExpires &&
- fileInfo->nexusDownloadUser == m_User.id().toInt()) {
- url = QString("%1/games/%2/mods/%3/files/%4/download_link?key=%5&expires=%6")
+ case NXMRequestInfo::TYPE_DESCRIPTION:
+ case NXMRequestInfo::TYPE_MODINFO: {
+ url = QString("%1/games/%2/mods/%3")
.arg(info.m_URL)
.arg(info.m_GameName)
- .arg(info.m_ModID)
- .arg(info.m_FileID)
- .arg(fileInfo->nexusKey)
- .arg(fileInfo->nexusExpires);
- } else {
- log::warn("{}", tr("Aborting download: Either you clicked on a premium-only "
- "link and your account is not premium, "
- "or the download link was generated by a different account "
- "than the one stored in Mod Organizer."));
- return;
- }
- } break;
- case NXMRequestInfo::TYPE_ENDORSEMENTS: {
- url = QString("%1/user/endorsements").arg(info.m_URL);
- } break;
- case NXMRequestInfo::TYPE_TOGGLEENDORSEMENT: {
- QString endorse = info.m_Endorse ? "endorse" : "abstain";
- url = QString("%1/games/%2/mods/%3/%4")
- .arg(info.m_URL)
- .arg(info.m_GameName)
- .arg(info.m_ModID)
- .arg(endorse);
- postObject.insert("Version", info.m_ModVersion);
- postData.setObject(postObject);
- } break;
- case NXMRequestInfo::TYPE_TOGGLETRACKING: {
- url = QStringLiteral("%1/user/tracked_mods?domain_name=%2")
- .arg(info.m_URL)
- .arg(info.m_GameName);
- postObject.insert("mod_id", info.m_ModID);
- postData.setObject(postObject);
- requestIsDelete = !info.m_Track;
- } break;
- case NXMRequestInfo::TYPE_TRACKEDMODS: {
- url = QStringLiteral("%1/user/tracked_mods").arg(info.m_URL);
- } break;
- case NXMRequestInfo::TYPE_FILEINFO_MD5: {
- url = QStringLiteral("%1/games/%2/mods/md5_search/%3")
- .arg(info.m_URL)
- .arg(info.m_GameName)
- .arg(QString(info.m_Hash.toHex()));
- }
+ .arg(info.m_ModID);
+ } break;
+ case NXMRequestInfo::TYPE_CHECKUPDATES: {
+ QString period;
+ switch (info.m_UpdatePeriod) {
+ case UpdatePeriod::DAY:
+ period = "1d";
+ break;
+ case UpdatePeriod::WEEK:
+ period = "1w";
+ break;
+ case UpdatePeriod::MONTH:
+ period = "1m";
+ break;
+ }
+ url = QString("%1/games/%2/mods/updated?period=%3").arg(info.m_URL).arg(info.m_GameName).arg(period);
+ } break;
+ case NXMRequestInfo::TYPE_FILES:
+ case NXMRequestInfo::TYPE_GETUPDATES: {
+ url = QString("%1/games/%2/mods/%3/files").arg(info.m_URL).arg(info.m_GameName).arg(info.m_ModID);
+ } break;
+ case NXMRequestInfo::TYPE_FILEINFO: {
+ url = QString("%1/games/%2/mods/%3/files/%4").arg(info.m_URL).arg(info.m_GameName).arg(info.m_ModID).arg(info.m_FileID);
+ } break;
+ case NXMRequestInfo::TYPE_DOWNLOADURL: {
+ ModRepositoryFileInfo *fileInfo = qobject_cast<ModRepositoryFileInfo*>(qvariant_cast<QObject*>(info.m_UserData));
+ if (m_User.type() == APIUserAccountTypes::Premium) {
+ url = QString("%1/games/%2/mods/%3/files/%4/download_link").arg(info.m_URL).arg(info.m_GameName).arg(info.m_ModID).arg(info.m_FileID);
+ } else if (!fileInfo->nexusKey.isEmpty() && fileInfo->nexusExpires && fileInfo->nexusDownloadUser == m_User.id().toInt()) {
+ url = QString("%1/games/%2/mods/%3/files/%4/download_link?key=%5&expires=%6")
+ .arg(info.m_URL).arg(info.m_GameName).arg(info.m_ModID).arg(info.m_FileID).arg(fileInfo->nexusKey).arg(fileInfo->nexusExpires);
+ } else {
+ log::warn("{}", tr("Aborting download: Either you clicked on a premium-only link and your account is not premium, "
+ "or the download link was generated by a different account than the one stored in Mod Organizer."));
+ return;
+ }
+ } break;
+ case NXMRequestInfo::TYPE_ENDORSEMENTS: {
+ url = QString("%1/user/endorsements").arg(info.m_URL);
+ } break;
+ case NXMRequestInfo::TYPE_TOGGLEENDORSEMENT: {
+ QString endorse = info.m_Endorse ? "endorse" : "abstain";
+ url = QString("%1/games/%2/mods/%3/%4").arg(info.m_URL).arg(info.m_GameName).arg(info.m_ModID).arg(endorse);
+ postObject.insert("Version", info.m_ModVersion);
+ postData.setObject(postObject);
+ } break;
+ case NXMRequestInfo::TYPE_TOGGLETRACKING: {
+ url = QStringLiteral("%1/user/tracked_mods?domain_name=%2").arg(info.m_URL).arg(info.m_GameName);
+ postObject.insert("mod_id", info.m_ModID);
+ postData.setObject(postObject);
+ requestIsDelete = !info.m_Track;
+ } break;
+ case NXMRequestInfo::TYPE_TRACKEDMODS: {
+ url = QStringLiteral("%1/user/tracked_mods").arg(info.m_URL);
+ } break;
+ case NXMRequestInfo::TYPE_FILEINFO_MD5: {
+ url = QStringLiteral("%1/games/%2/mods/md5_search/%3").arg(info.m_URL).arg(info.m_GameName).arg(QString(info.m_Hash.toHex()));
+ } break;
+ case NXMRequestInfo::TYPE_GAMEINFO: {
+ url = QStringLiteral("%1/games/%2").arg(info.m_URL).arg(info.m_GameName);
+ } break;
}
} else {
url = info.m_URL;
@@ -1074,65 +1045,53 @@ void NexusInterface::requestFinished(std::list<NXMRequestInfo>::iterator iter)
if (!responseDoc.isNull()) {
QVariant result = responseDoc.toVariant();
switch (iter->m_Type) {
- case NXMRequestInfo::TYPE_DESCRIPTION: {
- emit nxmDescriptionAvailable(iter->m_GameName, iter->m_ModID,
- iter->m_UserData, result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_MODINFO: {
- emit nxmModInfoAvailable(iter->m_GameName, iter->m_ModID, iter->m_UserData,
- result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_CHECKUPDATES: {
- emit nxmUpdateInfoAvailable(iter->m_GameName, iter->m_UserData, result,
- iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_FILES: {
- emit nxmFilesAvailable(iter->m_GameName, iter->m_ModID, iter->m_UserData,
- result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_GETUPDATES: {
- emit nxmUpdatesAvailable(iter->m_GameName, iter->m_ModID, iter->m_UserData,
- result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_FILEINFO: {
- emit nxmFileInfoAvailable(iter->m_GameName, iter->m_ModID, iter->m_FileID,
- iter->m_UserData, result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_DOWNLOADURL: {
- emit nxmDownloadURLsAvailable(iter->m_GameName, iter->m_ModID, iter->m_FileID,
- iter->m_UserData, result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_ENDORSEMENTS: {
- emit nxmEndorsementsAvailable(iter->m_UserData, result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_TOGGLEENDORSEMENT: {
- emit nxmEndorsementToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData,
- result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_TOGGLETRACKING: {
- auto results = result.toMap();
- auto message = results["message"].toString();
- if (message.contains(
- QRegularExpression("User [0-9]+ is already Tracking Mod: [0-9]+")) ||
- message.contains(
- QRegularExpression("User [0-9]+ is now Tracking Mod: [0-9]+"))) {
- emit nxmTrackingToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData,
- true, iter->m_ID);
- } else if (message.contains(QRegularExpression(
- "User [0-9]+ is no longer tracking [0-9]+")) ||
- message.contains(QRegularExpression(
- "Users is not tracking mod. Unable to untrack."))) {
- emit nxmTrackingToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData,
- false, iter->m_ID);
- }
- } break;
- case NXMRequestInfo::TYPE_TRACKEDMODS: {
- emit nxmTrackedModsAvailable(iter->m_UserData, result, iter->m_ID);
- } break;
- case NXMRequestInfo::TYPE_FILEINFO_MD5: {
- emit nxmFileInfoFromMd5Available(iter->m_GameName, iter->m_UserData, result,
- iter->m_ID);
- } break;
+ case NXMRequestInfo::TYPE_DESCRIPTION: {
+ emit nxmDescriptionAvailable(iter->m_GameName, iter->m_ModID, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_MODINFO: {
+ emit nxmModInfoAvailable(iter->m_GameName, iter->m_ModID, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_CHECKUPDATES: {
+ emit nxmUpdateInfoAvailable(iter->m_GameName, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_FILES: {
+ emit nxmFilesAvailable(iter->m_GameName, iter->m_ModID, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_GETUPDATES: {
+ emit nxmUpdatesAvailable(iter->m_GameName, iter->m_ModID, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_FILEINFO: {
+ emit nxmFileInfoAvailable(iter->m_GameName, iter->m_ModID, iter->m_FileID, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_DOWNLOADURL: {
+ emit nxmDownloadURLsAvailable(iter->m_GameName, iter->m_ModID, iter->m_FileID, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_ENDORSEMENTS: {
+ emit nxmEndorsementsAvailable(iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_TOGGLEENDORSEMENT: {
+ emit nxmEndorsementToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_TOGGLETRACKING: {
+ auto results = result.toMap();
+ auto message = results["message"].toString();
+ if (message.contains(QRegularExpression("User [0-9]+ is already Tracking Mod: [0-9]+")) ||
+ message.contains(QRegularExpression("User [0-9]+ is now Tracking Mod: [0-9]+"))) {
+ emit nxmTrackingToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData, true, iter->m_ID);
+ } else if (message.contains(QRegularExpression("User [0-9]+ is no longer tracking [0-9]+")) ||
+ message.contains(QRegularExpression("Users is not tracking mod. Unable to untrack."))) {
+ emit nxmTrackingToggled(iter->m_GameName, iter->m_ModID, iter->m_UserData, false, iter->m_ID);
+ }
+ } break;
+ case NXMRequestInfo::TYPE_TRACKEDMODS: {
+ emit nxmTrackedModsAvailable(iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_FILEINFO_MD5: {
+ emit nxmFileInfoFromMd5Available(iter->m_GameName, iter->m_UserData, result, iter->m_ID);
+ } break;
+ case NXMRequestInfo::TYPE_GAMEINFO: {
+ emit nxmGameInfoAvailable(iter->m_GameName, iter->m_UserData, result, iter->m_ID);
+ } break;
}
m_User.limits(parseLimits(reply));