diff options
| author | Silarn <jrim@rimpo.org> | 2019-05-09 12:04:03 -0500 |
|---|---|---|
| committer | Silarn <jrim@rimpo.org> | 2019-05-09 12:04:03 -0500 |
| commit | ed4eb2aae8fcf493c07a02cbca3df14f00c5e130 (patch) | |
| tree | df454d19e96d78b8a860d4fcb8f721392fe2c215 /src/nexusinterface.cpp | |
| parent | 3d2616ea989d728c4b1a1f9a3fc4cb852db50872 (diff) | |
Update NXM link handling to support premium link and validate user info
Diffstat (limited to 'src/nexusinterface.cpp')
| -rw-r--r-- | src/nexusinterface.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 9db0d54e..a4c08f53 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -180,7 +180,13 @@ QAtomicInt NexusInterface::NXMRequestInfo::s_NextID(0); NexusInterface::NexusInterface(PluginContainer *pluginContainer) - : m_PluginContainer(pluginContainer), m_RemainingDailyRequests(2500), m_RemainingHourlyRequests(100), m_MaxDailyRequests(2500), m_MaxHourlyRequests(100) + : m_PluginContainer(pluginContainer) + , m_RemainingDailyRequests(2500) + , m_RemainingHourlyRequests(100) + , m_MaxDailyRequests(2500) + , m_MaxHourlyRequests(100) + , m_IsPremium(false) + , m_UserID(0) { m_MOVersion = createVersionInfo(); @@ -216,12 +222,14 @@ void NexusInterface::loginCompleted() nextRequest(); } -void NexusInterface::setRateMax(const QString&, bool, std::tuple<int, int, int, int> limits) +void NexusInterface::setRateMax(const QString&, int userId, bool isPremium, std::tuple<int, int, int, int> limits) { m_RemainingDailyRequests = std::get<0>(limits); m_MaxDailyRequests = std::get<1>(limits); m_RemainingHourlyRequests = std::get<2>(limits); m_MaxHourlyRequests = std::get<3>(limits); + m_IsPremium = isPremium; + m_UserID = userId; emit requestsChanged(m_RequestQueue.size(), limits); } @@ -688,11 +696,17 @@ void NexusInterface::nextRequest() } break; case NXMRequestInfo::TYPE_DOWNLOADURL: { ModRepositoryFileInfo *fileInfo = qobject_cast<ModRepositoryFileInfo*>(qvariant_cast<QObject*>(info.m_UserData)); - if (!fileInfo->nexusKey.isEmpty() && fileInfo->nexusExpires) + if (m_IsPremium) { + 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_UserID) { 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); + } else { + QString warning("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."); + qWarning() << warning; + return; + } } break; case NXMRequestInfo::TYPE_ENDORSEMENTS: { url = QString("%1/user/endorsements").arg(info.m_URL); |
