halo-infinite-api 5.3.3 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authentication/halo-authentication-client.js +15 -7
- package/dist/authentication/halo-authentication-client.js.map +1 -1
- package/dist/authentication/xbox-authentication-client.js +29 -14
- package/dist/authentication/xbox-authentication-client.js.map +1 -1
- package/dist/core/halo-infinite-client.d.ts +7 -0
- package/dist/core/halo-infinite-client.js +46 -12
- package/dist/core/halo-infinite-client.js.map +1 -1
- package/dist/core/xbox-client.js +8 -2
- package/dist/core/xbox-client.js.map +1 -1
- package/dist/endpoints/halo-core-endpoints.d.ts +1 -0
- package/dist/endpoints/halo-core-endpoints.js +1 -0
- package/dist/endpoints/halo-core-endpoints.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/models/halo-infinite/matches-privacy.d.ts +8 -0
- package/dist/models/halo-infinite/matches-privacy.js +6 -0
- package/dist/models/halo-infinite/matches-privacy.js.map +1 -0
- package/dist/util/fetch-function.d.ts +2 -2
- package/dist/util/fetch-function.js +1 -4
- package/dist/util/fetch-function.js.map +1 -1
- package/dist/util/request-error.d.ts +6 -0
- package/dist/util/request-error.js +21 -0
- package/dist/util/request-error.js.map +1 -0
- package/package.json +1 -1
- package/src/authentication/halo-authentication-client.ts +22 -18
- package/src/authentication/xbox-authentication-client.ts +62 -51
- package/src/core/halo-infinite-client.ts +69 -8
- package/src/core/xbox-client.ts +7 -2
- package/src/endpoints/halo-core-endpoints.ts +1 -0
- package/src/index.ts +5 -0
- package/src/models/halo-infinite/matches-privacy.ts +9 -0
- package/src/util/fetch-function.ts +4 -7
- package/src/util/request-error.ts +23 -0
- package/dist/core/spartan-token-fetchers/auto-xsts-sartan-token-provider.d.ts +0 -11
- package/dist/core/spartan-token-fetchers/auto-xsts-sartan-token-provider.js +0 -43
- package/dist/core/spartan-token-fetchers/auto-xsts-sartan-token-provider.js.map +0 -1
- package/dist/core/spartan-token-fetchers/index.d.ts +0 -3
- package/dist/core/spartan-token-fetchers/index.js +0 -2
- package/dist/core/spartan-token-fetchers/index.js.map +0 -1
- package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.d.ts +0 -12
- package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.js +0 -26
- package/dist/core/spartan-token-fetchers/static-xsts-ticket-token-spartan-token-provider.js.map +0 -1
- package/dist/core/spartan-token-providers/auto-xsts-spartan-token-provider.d.ts +0 -11
- package/dist/core/spartan-token-providers/auto-xsts-spartan-token-provider.js +0 -29
- package/dist/core/spartan-token-providers/auto-xsts-spartan-token-provider.js.map +0 -1
- package/dist/core/spartan-token-providers/index.d.ts +0 -3
- package/dist/core/spartan-token-providers/index.js +0 -2
- package/dist/core/spartan-token-providers/index.js.map +0 -1
- package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.d.ts +0 -12
- package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.js +0 -25
- package/dist/core/spartan-token-providers/static-xsts-ticket-token-spartan-token-provider.js.map +0 -1
- package/dist/core/token-persister.d.ts +0 -4
- package/dist/core/token-persister.js +0 -2
- package/dist/core/token-persister.js.map +0 -1
- package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.d.ts +0 -11
- package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.js +0 -29
- package/dist/core/token-providers/spartan-token-providers/auto-xsts-spartan-token-provider.js.map +0 -1
- package/dist/models/halo-infinite/authoring-asset.d.ts +0 -56
- package/dist/models/halo-infinite/authoring-asset.js +0 -2
- package/dist/models/halo-infinite/authoring-asset.js.map +0 -1
|
@@ -2,6 +2,7 @@ import { DateTime } from "luxon";
|
|
|
2
2
|
import { ExpiryTokenCache } from "../util/expiry-token-cache";
|
|
3
3
|
import { defaultFetch } from "../util/fetch-function";
|
|
4
4
|
import { GlobalConstants } from "../util/global-contants";
|
|
5
|
+
import { RequestError } from "../util/request-error";
|
|
5
6
|
export class HaloAuthenticationClient {
|
|
6
7
|
fetchXstsToken;
|
|
7
8
|
loadToken;
|
|
@@ -19,7 +20,8 @@ export class HaloAuthenticationClient {
|
|
|
19
20
|
},
|
|
20
21
|
],
|
|
21
22
|
};
|
|
22
|
-
const
|
|
23
|
+
const url = "https://settings.svc.halowaypoint.com/spartan-token";
|
|
24
|
+
const response = await this.fetchFn(url, {
|
|
23
25
|
method: "POST",
|
|
24
26
|
body: JSON.stringify(tokenRequest),
|
|
25
27
|
headers: {
|
|
@@ -28,12 +30,18 @@ export class HaloAuthenticationClient {
|
|
|
28
30
|
Accept: "application/json, text/plain, */*",
|
|
29
31
|
},
|
|
30
32
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
if (response.status >= 200 && response.status < 300) {
|
|
34
|
+
const result = (await response.json());
|
|
35
|
+
const newToken = {
|
|
36
|
+
token: result.SpartanToken,
|
|
37
|
+
expiresAt: DateTime.fromISO(result.ExpiresUtc.ISO8601Date),
|
|
38
|
+
};
|
|
39
|
+
await this.saveToken(newToken);
|
|
40
|
+
return newToken;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new RequestError(url, response);
|
|
44
|
+
}
|
|
37
45
|
}, () => this.loadToken());
|
|
38
46
|
constructor(fetchXstsToken, loadToken, saveToken, fetchFn = defaultFetch) {
|
|
39
47
|
this.fetchXstsToken = fetchXstsToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"halo-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/halo-authentication-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"halo-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/halo-authentication-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAOrD,MAAM,OAAO,wBAAwB;IA0ChB;IACA;IAIA;IACA;IA/CX,iBAAiB,GAAG,IAAI,gBAAgB,CAC9C,KAAK,IAAI,EAAE;QACT,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE9C,MAAM,YAAY,GAAwB;YACxC,QAAQ,EAAE,qBAAqB;YAC/B,UAAU,EAAE,GAAG;YACf,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,aAAa;iBACzB;aACF;SACF,CAAC;QACF,MAAM,GAAG,GAAG,qDAAqD,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YAClC,OAAO,EAAE;gBACP,YAAY,EAAE,eAAe,CAAC,wBAAwB;gBACtD,cAAc,EAAE,iCAAiC;gBACjD,MAAM,EAAE,mCAAmC;aAC5C;SACF,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;YACnD,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAiB,CAAC;YAEvD,MAAM,QAAQ,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,YAAY;gBAC1B,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;aAC3D,CAAC;YACF,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC/B,OAAO,QAAQ,CAAC;SACjB;aAAM;YACL,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SACvC;IACH,CAAC,EACD,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CACvB,CAAC;IAEF,YACmB,cAA8C,EAC9C,SAGR,EACQ,SAA0C,EAC1C,UAAyB,YAAY;QANrC,mBAAc,GAAd,cAAc,CAAgC;QAC9C,cAAS,GAAT,SAAS,CAGjB;QACQ,cAAS,GAAT,SAAS,CAAiC;QAC1C,YAAO,GAAP,OAAO,CAA8B;IACrD,CAAC;IAEG,KAAK,CAAC,eAAe;QAC1B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -2,6 +2,7 @@ import { DateTime } from "luxon";
|
|
|
2
2
|
import { KeyedExpiryTokenCache } from "../util/keyed-expiry-token-cache";
|
|
3
3
|
import { ExpiryTokenCache } from "../util/expiry-token-cache";
|
|
4
4
|
import { defaultFetch } from "../util/fetch-function";
|
|
5
|
+
import { RequestError } from "../util/request-error";
|
|
5
6
|
export var RelyingParty;
|
|
6
7
|
(function (RelyingParty) {
|
|
7
8
|
RelyingParty["Xbox"] = "http://xboxlive.com";
|
|
@@ -11,7 +12,8 @@ export class XboxAuthenticationClient {
|
|
|
11
12
|
tokenPersisterOrPromise;
|
|
12
13
|
fetchFn;
|
|
13
14
|
userTokenCache = new ExpiryTokenCache(async (accessToken) => {
|
|
14
|
-
const
|
|
15
|
+
const url = "https://user.auth.xboxlive.com/user/authenticate";
|
|
16
|
+
const response = await this.fetchFn(url, {
|
|
15
17
|
method: "POST",
|
|
16
18
|
headers: {
|
|
17
19
|
"Content-Type": "application/json",
|
|
@@ -28,18 +30,25 @@ export class XboxAuthenticationClient {
|
|
|
28
30
|
},
|
|
29
31
|
}),
|
|
30
32
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
if (response.status >= 200 && response.status < 300) {
|
|
34
|
+
const result = (await response.json());
|
|
35
|
+
const token = {
|
|
36
|
+
...result,
|
|
37
|
+
expiresAt: DateTime.fromISO(result.NotAfter),
|
|
38
|
+
};
|
|
39
|
+
await (await this.tokenPersisterOrPromise)?.save("xbox.userToken", token);
|
|
40
|
+
return token;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new RequestError(url, response);
|
|
44
|
+
}
|
|
37
45
|
}, async () => {
|
|
38
46
|
const tokenPersister = await this.tokenPersisterOrPromise;
|
|
39
47
|
return ((await tokenPersister?.load("xbox.userToken")) ?? null);
|
|
40
48
|
});
|
|
41
49
|
xstsTicketCache = new KeyedExpiryTokenCache(async (relyingParty, userToken) => {
|
|
42
|
-
const
|
|
50
|
+
const url = "https://xsts.auth.xboxlive.com/xsts/authorize";
|
|
51
|
+
const response = await this.fetchFn(url, {
|
|
43
52
|
method: "POST",
|
|
44
53
|
headers: {
|
|
45
54
|
"Content-Type": "application/json",
|
|
@@ -55,12 +64,18 @@ export class XboxAuthenticationClient {
|
|
|
55
64
|
},
|
|
56
65
|
}),
|
|
57
66
|
});
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
if (response.status >= 200 && response.status < 300) {
|
|
68
|
+
const result = (await response.json());
|
|
69
|
+
const token = {
|
|
70
|
+
...result,
|
|
71
|
+
expiresAt: DateTime.fromISO(result.NotAfter),
|
|
72
|
+
};
|
|
73
|
+
await (await this.tokenPersisterOrPromise)?.save("xbox.xstsTicket." + relyingParty, token);
|
|
74
|
+
return token;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
throw new RequestError(url, response);
|
|
78
|
+
}
|
|
64
79
|
}, async (relyingParty) => (await (await this.tokenPersisterOrPromise)?.load("xbox.xstsTicket." + relyingParty)) ?? null);
|
|
65
80
|
constructor(tokenPersisterOrPromise, fetchFn = defaultFetch) {
|
|
66
81
|
this.tokenPersisterOrPromise = tokenPersisterOrPromise;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xbox-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/xbox-authentication-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"xbox-authentication-client.js","sourceRoot":"","sources":["../../src/authentication/xbox-authentication-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { PlaylistCsrContainer } from "../models/halo-infinite/playlist-csr-conta
|
|
|
10
10
|
import { ServiceRecord } from "../models/halo-infinite/service-record";
|
|
11
11
|
import { UserInfo } from "../models/halo-infinite/user-info";
|
|
12
12
|
import { SpartanTokenProvider } from "./token-providers/spartan-token-providers";
|
|
13
|
+
import { MatchesPrivacy } from "src/models/halo-infinite/matches-privacy";
|
|
13
14
|
export interface ResultContainer<TValue> {
|
|
14
15
|
Id: string;
|
|
15
16
|
ResultCode: 0 | 1;
|
|
@@ -59,4 +60,10 @@ export declare class HaloInfiniteClient {
|
|
|
59
60
|
getAsset: <TAssetType extends keyof AssetKindTypeMap>(assetType: TAssetType, assetId: string, init?: Omit<RequestInit, "body" | "method">) => Promise<AssetKindTypeMap[TAssetType]>;
|
|
60
61
|
/** Gets metadata related to a concrete version of a specified asset. */
|
|
61
62
|
getSpecificAssetVersion: <TAssetType extends keyof AssetKindTypeMap>(assetType: TAssetType, assetId: string, versionId: string, init?: Omit<RequestInit, "body" | "method">) => Promise<AssetKindTypeMap[TAssetType]>;
|
|
63
|
+
getCurrentUser: (init?: Omit<RequestInit, "body" | "method">) => Promise<{
|
|
64
|
+
xuid: string;
|
|
65
|
+
notificationsReadDate: string;
|
|
66
|
+
}>;
|
|
67
|
+
getMatchesPrivacy: (playerXuid: string, init?: Omit<RequestInit, "body" | "method">) => Promise<MatchesPrivacy>;
|
|
68
|
+
updateMatchesPrivacy: (playerXuid: string, matchesPrivacy: MatchesPrivacy, init?: Omit<RequestInit, "body" | "method">) => Promise<MatchesPrivacy>;
|
|
62
69
|
}
|
|
@@ -3,6 +3,7 @@ import { HaloCoreEndpoints } from "../endpoints/halo-core-endpoints";
|
|
|
3
3
|
import { AssetKind } from "../models/halo-infinite/asset-kind";
|
|
4
4
|
import { MatchType } from "../models/halo-infinite/match-type";
|
|
5
5
|
import { GlobalConstants } from "../util/global-contants";
|
|
6
|
+
import { RequestError } from "../util/request-error";
|
|
6
7
|
const assetKindUrlMap = {
|
|
7
8
|
[AssetKind.Map]: "Maps",
|
|
8
9
|
[AssetKind.UgcGameVariant]: "UgcGameVariants",
|
|
@@ -42,15 +43,32 @@ export class HaloInfiniteClient {
|
|
|
42
43
|
headers.set("Accept", "application/json");
|
|
43
44
|
}
|
|
44
45
|
headers.set("x-343-authorization-spartan", await this.spartanTokenProvider.getSpartanToken());
|
|
45
|
-
const
|
|
46
|
+
const response = await this.fetchFn(url, {
|
|
46
47
|
...init,
|
|
47
48
|
headers,
|
|
48
49
|
});
|
|
49
|
-
|
|
50
|
+
if (response.status >= 200 && response.status < 300) {
|
|
51
|
+
return (await response.json());
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
throw new RequestError(url, response);
|
|
55
|
+
}
|
|
50
56
|
}
|
|
51
57
|
async executeResultsRequest(...args) {
|
|
52
|
-
|
|
53
|
-
|
|
58
|
+
let resultsContainer;
|
|
59
|
+
try {
|
|
60
|
+
resultsContainer = await this.executeRequest(...args);
|
|
61
|
+
}
|
|
62
|
+
catch (e) {
|
|
63
|
+
if (e instanceof RequestError && e.response.status === 404) {
|
|
64
|
+
// 404s if even one of the xuids is invalid
|
|
65
|
+
resultsContainer = (await e.response.json());
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw e;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return resultsContainer.Value;
|
|
54
72
|
}
|
|
55
73
|
async executePaginationRequest(count, start, queryParameters, ...args) {
|
|
56
74
|
const [url, ...rest] = args;
|
|
@@ -127,14 +145,12 @@ export class HaloInfiniteClient {
|
|
|
127
145
|
...init,
|
|
128
146
|
method: "get",
|
|
129
147
|
});
|
|
130
|
-
getMatchSkill = async (matchId, playerIds, init) => {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
});
|
|
137
|
-
};
|
|
148
|
+
getMatchSkill = async (matchId, playerIds, init) => await this.executeResultsRequest(`https://${HaloCoreEndpoints.SkillOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/matches/${matchId}/skill?players=${playerIds
|
|
149
|
+
.map(wrapPlayerId)
|
|
150
|
+
.join(",")}`, {
|
|
151
|
+
...init,
|
|
152
|
+
method: "get",
|
|
153
|
+
});
|
|
138
154
|
/** Gets authoring metadata about a specific asset. */
|
|
139
155
|
getAsset = (assetType, assetId, init) => this.executeRequest(`https://${HaloCoreEndpoints.DiscoveryOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/${assetKindUrlMap[assetType]}/${assetId}`, {
|
|
140
156
|
...init,
|
|
@@ -145,5 +161,23 @@ export class HaloInfiniteClient {
|
|
|
145
161
|
...init,
|
|
146
162
|
method: "get",
|
|
147
163
|
});
|
|
164
|
+
getCurrentUser = (init) => this.executeRequest(`https://${HaloCoreEndpoints.CommsOrigin}.${HaloCoreEndpoints.ServiceDomain}/users/me`, {
|
|
165
|
+
...init,
|
|
166
|
+
method: "get",
|
|
167
|
+
});
|
|
168
|
+
getMatchesPrivacy = (playerXuid, init) => this.executeRequest(`https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/players/${wrapPlayerId(playerXuid)}/matches-privacy`, {
|
|
169
|
+
...init,
|
|
170
|
+
method: "get",
|
|
171
|
+
});
|
|
172
|
+
updateMatchesPrivacy = (playerXuid, matchesPrivacy, init) => {
|
|
173
|
+
const headers = new Headers(init?.headers);
|
|
174
|
+
headers.set("Content-Type", "application/json");
|
|
175
|
+
return this.executeRequest(`https://${HaloCoreEndpoints.StatsOrigin}.${HaloCoreEndpoints.ServiceDomain}/hi/players/${wrapPlayerId(playerXuid)}/matches-privacy`, {
|
|
176
|
+
...init,
|
|
177
|
+
method: "put",
|
|
178
|
+
headers,
|
|
179
|
+
body: JSON.stringify({ matchesPrivacy }),
|
|
180
|
+
});
|
|
181
|
+
};
|
|
148
182
|
}
|
|
149
183
|
//# sourceMappingURL=halo-infinite-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"halo-infinite-client.js","sourceRoot":"","sources":["../../src/core/halo-infinite-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAMrE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAM/D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"halo-infinite-client.js","sourceRoot":"","sources":["../../src/core/halo-infinite-client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/xbox-client.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RequestError } from "../util/request-error";
|
|
1
2
|
import { defaultFetch } from "../util/fetch-function";
|
|
2
3
|
export class XboxClient {
|
|
3
4
|
xboxTokenProvider;
|
|
@@ -17,11 +18,16 @@ export class XboxClient {
|
|
|
17
18
|
if (!headers.has("x-xbl-contract-version")) {
|
|
18
19
|
headers.set("x-xbl-contract-version", "1");
|
|
19
20
|
}
|
|
20
|
-
const
|
|
21
|
+
const response = await this.fetchFn(url, {
|
|
21
22
|
...init,
|
|
22
23
|
headers,
|
|
23
24
|
});
|
|
24
|
-
|
|
25
|
+
if (response.status >= 200 && response.status < 300) {
|
|
26
|
+
return (await response.json());
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
throw new RequestError(url, response);
|
|
30
|
+
}
|
|
25
31
|
}
|
|
26
32
|
async searchUsers(query, init) {
|
|
27
33
|
const { results } = await this.executeRequest(`https://usersearch.xboxlive.com/suggest?q=${encodeURIComponent(query)}`, { ...init, method: "GET" });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xbox-client.js","sourceRoot":"","sources":["../../src/core/xbox-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGrE,MAAM,OAAO,UAAU;IAEF;IACA;IAFnB,YACmB,iBAAoC,EACpC,UAAyB,YAAY;QADrC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,YAAO,GAAP,OAAO,CAA8B;IACrD,CAAC;IAEI,KAAK,CAAC,cAAc,CAAI,GAAW,EAAE,IAAiB;QAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACjC,OAAO,CAAC,GAAG,CACT,eAAe,EACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAClD,CAAC;SACH;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;SAC5C;QACD,MAAM,
|
|
1
|
+
{"version":3,"file":"xbox-client.js","sourceRoot":"","sources":["../../src/core/xbox-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAiB,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGrE,MAAM,OAAO,UAAU;IAEF;IACA;IAFnB,YACmB,iBAAoC,EACpC,UAAyB,YAAY;QADrC,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,YAAO,GAAP,OAAO,CAA8B;IACrD,CAAC;IAEI,KAAK,CAAC,cAAc,CAAI,GAAW,EAAE,IAAiB;QAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;SAC3C;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;YACjC,OAAO,CAAC,GAAG,CACT,eAAe,EACf,MAAM,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAClD,CAAC;SACH;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;SAC5C;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,GAAG,IAAI;YACP,OAAO;SACR,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE;YACnD,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;SACrC;aAAM;YACL,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;SACvC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,KAAa,EACb,IAA2C;QAE3C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,cAAc,CAa3C,6CAA6C,kBAAkB,CAAC,KAAK,CAAC,EAAE,EACxE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAC3B,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAA2C;QACpE,OAAO,MAAM,IAAI,CAAC,cAAc,CAC9B,8DAA8D,EAC9D,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAC3B,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"halo-core-endpoints.js","sourceRoot":"","sources":["../../src/endpoints/halo-core-endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kDAAkD;IAClD,oBAAoB,EAAE,qDAAqD;IAE3E,mBAAmB;IACnB,WAAW,EAAE,OAAO;IACpB,qBAAqB;IACrB,OAAO,EAAE,SAAS;IAClB,mBAAmB;IACnB,WAAW,EAAE,WAAW;IACxB,sBAAsB;IACtB,aAAa,EAAE,cAAc;IAC7B,uBAAuB;IACvB,eAAe,EAAE,uBAAuB;
|
|
1
|
+
{"version":3,"file":"halo-core-endpoints.js","sourceRoot":"","sources":["../../src/endpoints/halo-core-endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kDAAkD;IAClD,oBAAoB,EAAE,qDAAqD;IAE3E,mBAAmB;IACnB,WAAW,EAAE,OAAO;IACpB,qBAAqB;IACrB,OAAO,EAAE,SAAS;IAClB,mBAAmB;IACnB,WAAW,EAAE,WAAW;IACxB,sBAAsB;IACtB,aAAa,EAAE,cAAc;IAC7B,uBAAuB;IACvB,eAAe,EAAE,uBAAuB;IACxC,WAAW,EAAE,SAAS;IAEtB,qBAAqB;IACrB,aAAa,EAAE,0BAA0B;CAC1C,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export { MatchOutcome } from "./models/halo-infinite/match-outcome";
|
|
|
15
15
|
export { MatchSkill } from "./models/halo-infinite/match-skill";
|
|
16
16
|
export { MatchStats } from "./models/halo-infinite/match-stats";
|
|
17
17
|
export { MatchType } from "./models/halo-infinite/match-type";
|
|
18
|
+
export { MatchesPrivacy, Privacy, } from "./models/halo-infinite/matches-privacy";
|
|
18
19
|
export { PlayerMatchHistory } from "./models/halo-infinite/player-match-history";
|
|
19
20
|
export { Playlist } from "./models/halo-infinite/playlist";
|
|
20
21
|
export { PlaylistCsr } from "./models/halo-infinite/playlist-csr";
|
|
@@ -24,3 +25,4 @@ export { ServiceRecord } from "./models/halo-infinite/service-record";
|
|
|
24
25
|
export { Stats } from "./models/halo-infinite/stats";
|
|
25
26
|
export { UserInfo } from "./models/halo-infinite/user-info";
|
|
26
27
|
export { FetchFunction } from "./util/fetch-function";
|
|
28
|
+
export { RequestError } from "./util/request-error";
|
package/dist/index.js
CHANGED
|
@@ -8,5 +8,7 @@ export { AssetKind } from "./models/halo-infinite/asset-kind";
|
|
|
8
8
|
export { GameVariantCategory } from "./models/halo-infinite/game-variant-category";
|
|
9
9
|
export { MatchOutcome } from "./models/halo-infinite/match-outcome";
|
|
10
10
|
export { MatchType } from "./models/halo-infinite/match-type";
|
|
11
|
+
export { Privacy, } from "./models/halo-infinite/matches-privacy";
|
|
11
12
|
export { PlaylistExperience } from "./models/halo-infinite/playlist-experience";
|
|
13
|
+
export { RequestError } from "./util/request-error";
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,wBAAwB,GAEzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,4BAA4B,GAClD,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gGAAgG,CAAC;AAC3J,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,wBAAwB,GAEzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,iBAAiB,IAAI,4BAA4B,GAClD,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,yCAAyC,EAAE,MAAM,gGAAgG,CAAC;AAC3J,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAOhD,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAEL,OAAO,GACR,MAAM,wCAAwC,CAAC;AAKhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAKhF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matches-privacy.js","sourceRoot":"","sources":["../../../src/models/halo-infinite/matches-privacy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,OAGX;AAHD,WAAY,OAAO;IACjB,qCAAQ,CAAA;IACR,qCAAQ,CAAA;AACV,CAAC,EAHW,OAAO,KAAP,OAAO,QAGlB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type FetchFunction =
|
|
2
|
-
export declare const defaultFetch:
|
|
1
|
+
export type FetchFunction = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
2
|
+
export declare const defaultFetch: (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-function.js","sourceRoot":"","sources":["../../src/util/fetch-function.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAwB,EACxB,IAAkB,
|
|
1
|
+
{"version":3,"file":"fetch-function.js","sourceRoot":"","sources":["../../src/util/fetch-function.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,KAAwB,EACxB,IAAkB,EACC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export class RequestError extends Error {
|
|
2
|
+
request;
|
|
3
|
+
response;
|
|
4
|
+
url;
|
|
5
|
+
constructor(request, response) {
|
|
6
|
+
super(`${typeof request === "object" && "url" in request
|
|
7
|
+
? request.url
|
|
8
|
+
: typeof request === "string"
|
|
9
|
+
? request
|
|
10
|
+
: request.href} ${response.status} ${response.statusText}`);
|
|
11
|
+
this.request = request;
|
|
12
|
+
this.response = response;
|
|
13
|
+
this.url =
|
|
14
|
+
typeof request === "object" && "url" in request
|
|
15
|
+
? request.url
|
|
16
|
+
: typeof request === "string"
|
|
17
|
+
? request
|
|
18
|
+
: request.href;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=request-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-error.js","sourceRoot":"","sources":["../../src/util/request-error.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAa,SAAQ,KAAK;IAGnB;IACA;IAHF,GAAG,CAAS;IAC5B,YACkB,OAA0B,EAC1B,QAAkB;QAElC,KAAK,CACH,GACE,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,OAAO;YAC7C,CAAC,CAAC,OAAO,CAAC,GAAG;YACb,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;gBAC7B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,OAAO,CAAC,IACd,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAC7C,CAAC;QAXc,YAAO,GAAP,OAAO,CAAmB;QAC1B,aAAQ,GAAR,QAAQ,CAAU;QAWlC,IAAI,CAAC,GAAG;YACN,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,OAAO;gBAC7C,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;oBAC7B,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACrB,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -4,6 +4,7 @@ import type { SpartanTokenRequest } from "../models/spartan-token-request";
|
|
|
4
4
|
import { ExpiryTokenCache } from "../util/expiry-token-cache";
|
|
5
5
|
import { FetchFunction, defaultFetch } from "../util/fetch-function";
|
|
6
6
|
import { GlobalConstants } from "../util/global-contants";
|
|
7
|
+
import { RequestError } from "../util/request-error";
|
|
7
8
|
|
|
8
9
|
export interface Token {
|
|
9
10
|
token: string;
|
|
@@ -25,25 +26,28 @@ export class HaloAuthenticationClient {
|
|
|
25
26
|
},
|
|
26
27
|
],
|
|
27
28
|
};
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
29
|
+
const url = "https://settings.svc.halowaypoint.com/spartan-token";
|
|
30
|
+
const response = await this.fetchFn(url, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
body: JSON.stringify(tokenRequest),
|
|
33
|
+
headers: {
|
|
34
|
+
"User-Agent": GlobalConstants.HALO_WAYPOINT_USER_AGENT,
|
|
35
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
36
|
+
Accept: "application/json, text/plain, */*",
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
if (response.status >= 200 && response.status < 300) {
|
|
40
|
+
const result = (await response.json()) as SpartanToken;
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
42
|
+
const newToken = {
|
|
43
|
+
token: result.SpartanToken,
|
|
44
|
+
expiresAt: DateTime.fromISO(result.ExpiresUtc.ISO8601Date),
|
|
45
|
+
};
|
|
46
|
+
await this.saveToken(newToken);
|
|
47
|
+
return newToken;
|
|
48
|
+
} else {
|
|
49
|
+
throw new RequestError(url, response);
|
|
50
|
+
}
|
|
47
51
|
},
|
|
48
52
|
() => this.loadToken()
|
|
49
53
|
);
|