summaryrefslogtreecommitdiff
path: root/src/nexusinterface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/nexusinterface.cpp')
-rw-r--r--src/nexusinterface.cpp24
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);