MCPcopy Create free account
hub / github.com/FreesmTeam/FreesmLauncher / parseXTokenResponse

Function parseXTokenResponse

launcher/minecraft/auth/Parsers.cpp:82–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80*/
81
82bool parseXTokenResponse(QByteArray& data, Token& output, QString name)
83{
84 qDebug() << "Parsing" << name << ":";
85 qCDebug(authCredentials()) << data;
86 QJsonParseError jsonError;
87 QJsonDocument doc = QJsonDocument::fromJson(data, &jsonError);
88 if (jsonError.error) {
89 qWarning() << "Failed to parse response from user.auth.xboxlive.com as JSON: " << jsonError.errorString();
90 return false;
91 }
92
93 auto obj = doc.object();
94 if (!getDateTime(obj.value("IssueInstant"), output.issueInstant)) {
95 qWarning() << "User IssueInstant is not a timestamp";
96 return false;
97 }
98 if (!getDateTime(obj.value("NotAfter"), output.notAfter)) {
99 qWarning() << "User NotAfter is not a timestamp";
100 return false;
101 }
102 if (!getString(obj.value("Token"), output.token)) {
103 qWarning() << "User Token is not a string";
104 return false;
105 }
106 auto arrayVal = obj.value("DisplayClaims").toObject().value("xui");
107 if (!arrayVal.isArray()) {
108 qWarning() << "Missing xui claims array";
109 return false;
110 }
111 bool foundUHS = false;
112 for (auto item : arrayVal.toArray()) {
113 if (!item.isObject()) {
114 continue;
115 }
116 auto obj_ = item.toObject();
117 if (obj_.contains("uhs")) {
118 foundUHS = true;
119 } else {
120 continue;
121 }
122 // consume all 'display claims' ... whatever that means
123 for (auto iter = obj_.begin(); iter != obj_.end(); iter++) {
124 QString claim;
125 if (!getString(obj_.value(iter.key()), claim)) {
126 qWarning() << "display claim " << iter.key() << " is not a string...";
127 return false;
128 }
129 output.extra[iter.key()] = claim;
130 }
131
132 break;
133 }
134 if (!foundUHS) {
135 qWarning() << "Missing uhs";
136 return false;
137 }
138 output.validity = Validity::Certain;
139 qDebug() << name << "is valid.";

Callers 2

onRequestDoneMethod · 0.85
onRequestDoneMethod · 0.85

Calls 6

getDateTimeFunction · 0.85
getStringFunction · 0.85
errorStringMethod · 0.80
objectMethod · 0.80
valueMethod · 0.80
containsMethod · 0.45

Tested by

no test coverage detected