From 39aebddf3b6b93091aa8494f74690b4a819593d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Fri, 13 Dec 2013 02:47:59 +0100 Subject: Add support for 1.7.4 user_type (needs testing with legacy accounts) --- logic/auth/MojangAccount.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'logic/auth/MojangAccount.cpp') diff --git a/logic/auth/MojangAccount.cpp b/logic/auth/MojangAccount.cpp index b1acfb25..185c735c 100644 --- a/logic/auth/MojangAccount.cpp +++ b/logic/auth/MojangAccount.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -52,15 +53,30 @@ MojangAccountPtr MojangAccount::loadFromJson(const QJsonObject &object) QJsonObject profileObject = profileVal.toObject(); QString id = profileObject.value("id").toString(""); QString name = profileObject.value("name").toString(""); + bool legacy = profileObject.value("legacy").toBool(false); if (id.isEmpty() || name.isEmpty()) { QLOG_WARN() << "Unable to load a profile because it was missing an ID or a name."; continue; } - profiles.append({id, name}); + profiles.append({id, name, legacy}); } MojangAccountPtr account(new MojangAccount()); + if(object.value("user").isObject()) + { + User u; + QJsonObject userStructure = object.value("user").toObject(); + u.id = userStructure.value("id").toString(); + QJsonObject propMap = userStructure.value("properties").toObject(); + for(auto key: propMap.keys()) + { + auto values = propMap.operator[](key).toArray(); + for(auto value: values) + u.properties.insert(key, value.toString()); + } + account->m_user = u; + } account->m_username = username; account->m_clientToken = clientToken; account->m_accessToken = accessToken; @@ -95,10 +111,24 @@ QJsonObject MojangAccount::saveToJson() const QJsonObject profileObj; profileObj.insert("id", profile.id); profileObj.insert("name", profile.name); + profileObj.insert("legacy", profile.legacy); profileArray.append(profileObj); } json.insert("profiles", profileArray); + QJsonObject userStructure; + { + userStructure.insert("id", m_user.id); + QJsonObject userAttrs; + for(auto key: m_user.properties.keys()) + { + auto array = QJsonArray::fromStringList(m_user.properties.values(key)); + userAttrs.insert(key, array); + } + userStructure.insert("properties", userAttrs); + } + json.insert("user", userStructure); + if (m_currentProfile != -1) json.insert("activeProfile", currentProfile()->id); -- cgit v1.2.3