summaryrefslogtreecommitdiff
path: root/src/nxmaccessmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/nxmaccessmanager.cpp')
-rw-r--r--src/nxmaccessmanager.cpp33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/nxmaccessmanager.cpp b/src/nxmaccessmanager.cpp
index b1e1ad89..ee6c03f1 100644
--- a/src/nxmaccessmanager.cpp
+++ b/src/nxmaccessmanager.cpp
@@ -18,8 +18,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
*/
#include "nxmaccessmanager.h"
-
#include "iplugingame.h"
+#include "nexusinterface.h"
#include "nxmurl.h"
#include "report.h"
#include "utility.h"
@@ -176,16 +176,21 @@ bool NXMAccessManager::validateWaiting() const
}
-void NXMAccessManager::apiCheck(const QString &apiKey)
+void NXMAccessManager::apiCheck(const QString &apiKey, bool force)
{
if (m_ValidateReply != nullptr) {
return;
}
+ if (force) {
+ m_ValidateState = VALIDATE_NOT_CHECKED;
+ }
+
if (m_ValidateState == VALIDATE_VALID) {
emit validateSuccessful(false);
return;
}
+
m_ApiKey = apiKey;
startValidationCheck();
}
@@ -214,6 +219,13 @@ QString NXMAccessManager::apiKey() const
return m_ApiKey;
}
+void NXMAccessManager::clearApiKey()
+{
+ m_ApiKey = "";
+ m_ValidateState = VALIDATE_NOT_VALID;
+
+ emit credentialsReceived(APIUserAccount());
+}
void NXMAccessManager::validateTimeout()
{
@@ -229,7 +241,6 @@ void NXMAccessManager::validateTimeout()
if (m_ValidateReply != nullptr) {
m_ValidateReply->deleteLater();
m_ValidateReply = nullptr;
- m_ValidateAttempted = false; // this usually means we might have success later
}
emit validateFailed(tr("There was a timeout during the request"));
@@ -272,23 +283,25 @@ void NXMAccessManager::validateFinished()
if (!jdoc.isNull()) {
QJsonObject credentialsData = jdoc.object();
if (credentialsData.contains("user_id")) {
+ int id = credentialsData.value("user_id").toInt();
QString name = credentialsData.value("name").toString();
bool premium = credentialsData.value("is_premium").toBool();
- std::tuple<int, int, int, int> limits(std::make_tuple(
- m_ValidateReply->rawHeader("x-rl-daily-remaining").toInt(),
- m_ValidateReply->rawHeader("x-rl-daily-limit").toInt(),
- m_ValidateReply->rawHeader("x-rl-hourly-remaining").toInt(),
- m_ValidateReply->rawHeader("x-rl-hourly-limit").toInt()
- ));
+ const auto user = APIUserAccount()
+ .id(QString("%1").arg(id))
+ .name(name)
+ .type(premium ? APIUserAccountTypes::Premium : APIUserAccountTypes::Regular)
+ .limits(NexusInterface::parseLimits(m_ValidateReply));
- emit credentialsReceived(name, premium, limits);
+
+ emit credentialsReceived(user);
m_ValidateReply->deleteLater();
m_ValidateReply = nullptr;
m_ValidateState = VALIDATE_VALID;
emit validateSuccessful(true);
+
} else {
m_ApiKey.clear();
m_ValidateState = VALIDATE_NOT_VALID;