homebridge-xbox-tv
Version:
Homebridge plugin to control Xbox game consoles.
65 lines (56 loc) • 2.09 kB
JavaScript
import QueryString from 'querystring';
import axios from 'axios';
class Catalog {
constructor(tokens, authorizationHeaders) {
this.tokens = tokens;
const headers = authorizationHeaders;
headers['x-xbl-contract-version'] = '5';
//create axios instance
this.axiosInstance = axios.create({
method: 'GET',
headers: headers
});
}
getUserScreenshots() {
return new Promise(async (resolve, reject) => {
try {
const url = `https://screenshotsmetadata.xboxlive.com/users/me/screenshot`;
const response = await this.axiosInstance(url);
resolve(response,data);
} catch (error) {
reject(error);
};
});
}
getCommunityScreenshotsByTitleId(titleId) {
return new Promise(async (resolve, reject) => {
try {
const url = `https://screenshotsmetadata.xboxlive.com/public/titles/${titleId}/screenshots?qualifier=created&maxItems=10`;
const response = await this.axiosInstance(url);
resolve(response.data);
} catch (error) {
reject(error);
};
});
}
getScreenshotsByXuid(titleId, skipItems, maxItems) {
return new Promise(async (resolve, reject) => {
try {
const params = {
skipitems: skipItems || 0,
maxitems: maxItems || 25,
}
if (titleId !== undefined) {
params.titleid = titleId
}
const queryParams = QueryString.stringify(params);
const url = `https://screenshotsmetadata.xboxlive.com/users/xuid(${this.tokens.xsts.DisplayClaims.xui[0].xid})/screenshots?${queryParams}`;
const response = await this.axiosInstance(url);
resolve(response.data);
} catch (error) {
reject(error);
};
});
}
}
export default Catalog;