summaryrefslogtreecommitdiff
path: root/src/nexusinterface.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nexusinterface.h')
-rw-r--r--src/nexusinterface.h131
1 files changed, 5 insertions, 126 deletions
diff --git a/src/nexusinterface.h b/src/nexusinterface.h
index 6c4e8d11..6e768149 100644
--- a/src/nexusinterface.h
+++ b/src/nexusinterface.h
@@ -20,6 +20,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#ifndef NEXUSINTERFACE_H
#define NEXUSINTERFACE_H
+#include "apiuseraccount.h"
+
#include <utility.h>
#include <versioninfo.h>
#include <imodrepositorybridge.h>
@@ -41,130 +43,6 @@ class NXMAccessManager;
/**
- * represents user account types on a mod provider website such as nexus
- */
-enum class APIUserAccountTypes
-{
- // not logged in
- None = 0,
-
- // regular account
- Regular,
-
- // premium account
- Premium
-};
-
-
-/**
- * current limits imposed on the user account
- **/
-struct APILimits
-{
- // maximum number of requests per day
- int maxDailyRequests = 0;
-
- // remaining number of requests today
- int remainingDailyRequests = 0;
-
- // maximum number of requests per hour
- int maxHourlyRequests = 0;
-
- // remaining number of requests this hour
- int remainingHourlyRequests = 0;
-};
-
-
-/**
- * API statistics
- */
-struct APIStats
-{
- // number of API requests currently queued
- int requestsQueued = 0;
-};
-
-
-/**
- * represents a user account on the mod provier website
- */
-class APIUserAccount
-{
-public:
- // when the number of remanining requests is under this number, further
- // requests will be throttled by avoiding non-critical ones
- static const int ThrottleThreshold = 300;
-
- APIUserAccount();
-
- /**
- * user id
- */
- const QString& id() const;
-
- /**
- * user name
- */
- const QString& name() const;
-
- /**
- * account type
- */
- APIUserAccountTypes type() const;
-
- /**
- * current API limits
- */
- const APILimits& limits() const;
-
-
- /**
- * sets the user id
- */
- APIUserAccount& id(const QString& id);
-
- /**
- * sets the user name
- **/
- APIUserAccount& name(const QString& name);
-
- /**
- * sets the acount type
- */
- APIUserAccount& type(APIUserAccountTypes type);
-
- /**
- * sets the current limits
- */
- APIUserAccount& limits(const APILimits& limits);
-
-
- /**
- * returns the number of remaining requests
- */
- int remainingRequests() const;
-
- /**
- * whether the number of remaining requests is low enough that further
- * requests should be throttled
- */
- bool shouldThrottle() const;
-
- /**
- * true if all the remaining requests have been used and the API will refuse
- * further requests
- */
- bool exhausted() const;
-
-private:
- QString m_id, m_name;
- APIUserAccountTypes m_type;
- APILimits m_limits;
- APIStats m_stats;
-};
-
-
-/**
* @brief convenience class to make nxm requests easier
* usually, all objects that started a nxm request will be signaled if one finished.
* Therefore, the objects need to store the id of the requests they started and then filter
@@ -521,6 +399,9 @@ public:
std::vector<std::pair<QString, QString>> getGameChoices(const MOBase::IPluginGame *game);
+ APIUserAccount getAPIUserAccount() const;
+ APIStats getAPIStats() const;
+
public:
/**
@@ -667,8 +548,6 @@ private:
MOBase::VersionInfo m_MOVersion;
PluginContainer *m_PluginContainer;
APIUserAccount m_User;
-
- APIStats stats() const;
};
#endif // NEXUSINTERFACE_H