diff options
Diffstat (limited to 'src/nexusinterface.cpp')
| -rw-r--r-- | src/nexusinterface.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/nexusinterface.cpp b/src/nexusinterface.cpp index 19fc3af4..760af6a9 100644 --- a/src/nexusinterface.cpp +++ b/src/nexusinterface.cpp @@ -148,7 +148,7 @@ QAtomicInt NexusInterface::NXMRequestInfo::s_NextID(0); NexusInterface::NexusInterface(PluginContainer *pluginContainer) - : m_NMMVersion(), m_PluginContainer(pluginContainer) + : m_NMMVersion(), m_PluginContainer(pluginContainer), m_RemainingRequests(300), m_MaxRequests(300) { m_MOVersion = createVersionInfo(); @@ -190,6 +190,16 @@ void NexusInterface::loginCompleted() nextRequest(); } +void NexusInterface::setRateMax(const QString &userName, bool isPremium) +{ + if (isPremium) { + m_MaxRequests = 600; + m_RemainingRequests = 600; + } else { + m_MaxRequests = 300; + m_RemainingRequests = 300; + } +} void NexusInterface::interpretNexusFileName(const QString &fileName, QString &modName, int &modID, bool query) { @@ -459,6 +469,11 @@ void NexusInterface::nextRequest() return; } + if (m_RemainingRequests <= 0) { + qWarning() << tr("You've exceeded the Nexus API rate limit and requests are now being throttled."); + return; + } + if (requiresLogin(m_RequestQueue.head()) && !getAccessManager()->validated()) { if (!getAccessManager()->validateAttempted()) { emit needLogin(); @@ -468,6 +483,8 @@ void NexusInterface::nextRequest() } } + m_RemainingRequests--; + NXMRequestInfo info = m_RequestQueue.dequeue(); info.m_Timeout = new QTimer(this); info.m_Timeout->setInterval(60000); @@ -634,6 +651,12 @@ void NexusInterface::requestTimeout() } } +void NexusInterface::calculateRequests() +{ + if (m_RemainingRequests < m_MaxRequests) + m_RemainingRequests++; +} + namespace { QString get_management_url(MOBase::IPluginGame const *game) { @@ -661,7 +684,8 @@ NexusInterface::NXMRequestInfo::NXMRequestInfo(int modID , m_NexusGameID(game->nexusGameID()) , m_GameName(game->gameNexusName()) , m_Endorse(false) -{} +{ +} NexusInterface::NXMRequestInfo::NXMRequestInfo(int modID , QString modVersion |
