homebridge-xbox-tv
Version:
Homebridge plugin to control Xbox game consoles.
64 lines (56 loc) • 2.06 kB
JavaScript
import QueryString from 'querystring';
import axios from 'axios';
class GameClip {
constructor(tokens, authorizationHeaders) {
this.tokens = tokens;
const headers = authorizationHeaders;
headers['x-xbl-contract-version'] = '1';
//create axios instance
this.axiosInstance = axios.create({
method: 'GET',
headers: headers
});
}
getUserGameclips() {
return new Promise(async (resolve, reject) => {
try {
const url = `https://gameclipsmetadata.xboxlive.com/users/me/clips`;
const response = await this.axiosInstance(url);
resolve(response.data);
} catch (error) {
reject(error);
};
});
}
getCommunityGameclipsByTitleId(titleId) {
return new Promise(async (resolve, reject) => {
try {
const url = `https://gameclipsmetadata.xboxlive.com/public/titles/${titleId}clips/saved?qualifier=created`;
const response = await this.axiosInstance(url);
resolve(response.data);
} catch (error) {
reject(error);
};
});
}
getGameclipsByXuid(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://gameclipsmetadata.xboxlive.com/users/xuid(${this.tokens.xsts.DisplayClaims.xui[0].xid})/clips?${queryParams}`;
const response = await this.axiosInstance(url);
resolve(response.data);
} catch (error) {
reject(error);
};
});
}
}
export default GameClip;