2017-02-01 10:39:52 +00:00
|
|
|
import 'whatwg-fetch';
|
|
|
|
|
2017-06-15 00:50:56 +00:00
|
|
|
let fetchFunction = fetch;
|
|
|
|
|
2017-02-01 10:39:52 +00:00
|
|
|
function checkStatus(response) {
|
|
|
|
if (!response.ok) {
|
|
|
|
return response.text().then((text) => {
|
|
|
|
throw new Error(text);
|
|
|
|
});
|
2017-01-31 13:40:01 +00:00
|
|
|
}
|
2017-02-01 10:39:52 +00:00
|
|
|
return response;
|
|
|
|
}
|
2017-01-31 13:40:01 +00:00
|
|
|
|
2017-02-01 10:39:52 +00:00
|
|
|
function parseJson(response) {
|
|
|
|
return response.json();
|
|
|
|
}
|
2017-01-31 13:40:01 +00:00
|
|
|
|
2017-02-01 10:39:52 +00:00
|
|
|
function encodeQueryParams(params) {
|
|
|
|
return '?' + Object.keys(params).map((k) => {
|
|
|
|
return k + '=' + encodeURIComponent(params[k]);
|
|
|
|
}).join('&');
|
|
|
|
}
|
2017-01-31 13:40:01 +00:00
|
|
|
|
2017-02-01 10:39:52 +00:00
|
|
|
const request = (url, opts) => {
|
|
|
|
if (opts && opts.qs) {
|
|
|
|
url += encodeQueryParams(opts.qs);
|
|
|
|
delete opts.qs;
|
|
|
|
}
|
|
|
|
if (opts && opts.body) {
|
|
|
|
if (!opts.headers) {
|
|
|
|
opts.headers = {};
|
|
|
|
}
|
|
|
|
opts.body = JSON.stringify(opts.body);
|
|
|
|
opts.headers['Content-Type'] = 'application/json';
|
|
|
|
}
|
2017-06-15 00:50:56 +00:00
|
|
|
return fetchFunction(url, opts)
|
2017-02-01 10:39:52 +00:00
|
|
|
.then(checkStatus)
|
|
|
|
.then(parseJson);
|
2017-01-31 13:40:01 +00:00
|
|
|
};
|
2017-01-30 15:50:31 +00:00
|
|
|
|
2017-02-01 10:39:52 +00:00
|
|
|
|
2017-01-30 15:50:31 +00:00
|
|
|
export default class RtsClient {
|
|
|
|
constructor(url) {
|
|
|
|
this._url = url;
|
|
|
|
}
|
|
|
|
|
|
|
|
getTeamsConfig() {
|
2017-02-01 10:39:52 +00:00
|
|
|
return request(this._url + '/teams');
|
2017-01-30 15:50:31 +00:00
|
|
|
}
|
2017-01-31 11:13:05 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Track a referral with the Riot Team Server. This should be called once a referred
|
|
|
|
* user has been successfully registered.
|
|
|
|
* @param {string} referrer the user ID of one who referred the user to Riot.
|
2017-02-10 16:50:25 +00:00
|
|
|
* @param {string} sid the sign-up identity server session ID .
|
|
|
|
* @param {string} clientSecret the sign-up client secret.
|
2017-02-01 10:39:52 +00:00
|
|
|
* @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon
|
2017-01-31 11:13:05 +00:00
|
|
|
* success.
|
|
|
|
*/
|
2017-02-10 16:50:25 +00:00
|
|
|
trackReferral(referrer, sid, clientSecret) {
|
2017-02-01 10:39:52 +00:00
|
|
|
return request(this._url + '/register',
|
|
|
|
{
|
2017-02-01 11:16:14 +00:00
|
|
|
body: {
|
|
|
|
referrer: referrer,
|
2017-02-10 16:50:25 +00:00
|
|
|
session_id: sid,
|
|
|
|
client_secret: clientSecret,
|
2017-02-01 11:16:14 +00:00
|
|
|
},
|
2017-02-01 10:39:52 +00:00
|
|
|
method: 'POST',
|
2017-06-15 00:50:56 +00:00
|
|
|
},
|
2017-02-01 10:39:52 +00:00
|
|
|
);
|
2017-01-31 11:13:05 +00:00
|
|
|
}
|
|
|
|
|
2017-02-01 11:16:14 +00:00
|
|
|
getTeam(teamToken) {
|
2017-02-01 10:39:52 +00:00
|
|
|
return request(this._url + '/teamConfiguration',
|
|
|
|
{
|
2017-02-01 11:16:14 +00:00
|
|
|
qs: {
|
|
|
|
team_token: teamToken,
|
|
|
|
},
|
2017-06-15 00:50:56 +00:00
|
|
|
},
|
2017-02-01 10:39:52 +00:00
|
|
|
);
|
2017-01-31 11:13:05 +00:00
|
|
|
}
|
2017-02-03 14:34:24 +00:00
|
|
|
|
2017-02-07 12:01:44 +00:00
|
|
|
/**
|
|
|
|
* Signal to the RTS that a login has occurred and that a user requires their team's
|
|
|
|
* token.
|
|
|
|
* @param {string} userId the user ID of the user who is a member of a team.
|
|
|
|
* @returns {Promise} a promise that resolves to { team_token: 'sometoken' } upon
|
|
|
|
* success.
|
|
|
|
*/
|
2017-02-03 14:34:24 +00:00
|
|
|
login(userId) {
|
|
|
|
return request(this._url + '/login',
|
|
|
|
{
|
|
|
|
qs: {
|
|
|
|
user_id: userId,
|
|
|
|
},
|
2017-06-15 00:50:56 +00:00
|
|
|
},
|
2017-02-03 14:34:24 +00:00
|
|
|
);
|
|
|
|
}
|
2017-06-15 00:50:56 +00:00
|
|
|
|
|
|
|
// allow fetch to be replaced, for testing.
|
|
|
|
static setFetch(fn) {
|
|
|
|
fetchFunction = fn;
|
|
|
|
}
|
2017-01-30 15:50:31 +00:00
|
|
|
}
|