friend-connect
Version:
**BEFORE YOU USE THIS TOOL, PLEASE READ THE FOLLOWING: WE _AS CONTRIBUTORS_ ARE NOT RESPONSIBLE FOR ANY DAMAGE OR LOSS CAUSED BY THIS APP. USE AN ALT ACCOUNT, JUST IN CASE THERE IS AN ISSUE WITH THIS METHOD.**
49 lines (48 loc) • 1.84 kB
JavaScript
import { parseIdentifier } from "../utils";
export default class Achievements {
constructor(xboxLiveClient) {
this.xbox = xboxLiveClient;
}
//TODO language type
async getAchievements(identifier, language) {
const res = await fetch(`${Achievements.uri}/users/${parseIdentifier(identifier)}/achievements`, {
method: "GET",
headers: {
Authorization: this.xbox.authorizationHeader,
"x-xbl-contract-version": "5",
"Accept-Language": language ?? "en-us",
},
});
let text = await res.status;
let data = await res.json();
return data.achievements;
}
async getAchievement(identifier, serviceConfigId, achievementId, language) {
const res = await fetch(`${Achievements.uri}/users/${parseIdentifier(identifier)}/achievements/${serviceConfigId}/${achievementId}`, {
method: "GET",
headers: {
Authorization: this.xbox.authorizationHeader,
"x-xbl-contract-version": "5",
"Accept-Language": language ?? "en-us",
},
});
let data = await res.json();
return data.achievement;
}
/**
* Returns a 403 atm
*/
async getTitleHistory(identifier, query) {
const res = await fetch(`${Achievements.uri}/users/${parseIdentifier(identifier //@ts-ignore
)}/history/titles${new URLSearchParams(query)}`, {
method: "GET",
headers: {
Authorization: this.xbox.authorizationHeader,
"x-xbl-contract-version": "5",
},
});
let data = await res.json();
return data;
}
}
Achievements.uri = "https://achievements.xboxlive.com";