From 7f56407b916f6ca204e72f25c01965441e0228b1 Mon Sep 17 00:00:00 2001 From: Silarn Date: Thu, 31 Jan 2019 23:19:16 -0600 Subject: Use NXM link key and expiration in file list API call when available --- src/downloadmanager.cpp | 10 ++++++++-- src/nexusinterface.cpp | 7 ++++++- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp index 32d05230..1db8b0eb 100644 --- a/src/downloadmanager.cpp +++ b/src/downloadmanager.cpp @@ -575,7 +575,13 @@ void DownloadManager::addNXMDownload(const QString &url) emit update(-1); emit downloadAdded(); - m_RequestIDs.insert(m_NexusInterface->requestFileInfo(nxmInfo.game(), nxmInfo.modId(), nxmInfo.fileId(), this, nxmInfo.fileId(), "")); + ModRepositoryFileInfo *info = new ModRepositoryFileInfo(); + + info->nexusKey = nxmInfo.key(); + info->nexusExpires = nxmInfo.expires(); + + QObject *test = info; + m_RequestIDs.insert(m_NexusInterface->requestFileInfo(nxmInfo.game(), nxmInfo.modId(), nxmInfo.fileId(), this, qVariantFromValue(test), "")); } @@ -1520,7 +1526,7 @@ void DownloadManager::nxmFileInfoAvailable(QString gameName, int modID, int file m_RequestIDs.erase(idIter); } - ModRepositoryFileInfo *info = new ModRepositoryFileInfo(); + ModRepositoryFileInfo *info = qobject_cast(qvariant_cast(userData)); QVariantMap result = resultData.toMap(); info->name = result["name"].toString(); diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 16f96154..1d6d2015 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -532,7 +532,12 @@ void NexusInterface::nextRequest() 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: { - 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); + ModRepositoryFileInfo *fileInfo = qobject_cast(qvariant_cast(info.m_UserData)); + if (!fileInfo->nexusKey.isEmpty() && fileInfo->nexusExpires) + 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 + 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); } break; case NXMRequestInfo::TYPE_TOGGLEENDORSEMENT: { QString endorse = info.m_Endorse ? "endorse" : "abstain"; -- cgit v1.3.1