NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name fill headers
// @namespace http://tampermonkey.net/
// @version 0.1
// @description shows how to use babel compiler
// @author kazatca
// @require https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.18.2/babel.js
// @require https://cdnjs.cloudflare.com/ajax/libs/babel-polyfill/6.16.0/polyfill.js
// @match https://utcom-gateway.unitedtraders.work/graphql
// @license MIT
// @copyright 2018, kazatca (https://openuserjs.org//users/kazatca)
// ==/UserScript==
var inline_src = (<><![CDATA[
const url = 'https://sso.unitedtraders.work/auth/realms/aurora/protocol/openid-connect/token';
const username = '';
const password = '';
const timeout = 270000;
const getForm = values =>
Object.keys(values).map(key => key + '=' + encodeURIComponent(values[key])).join('&');
const post = body =>
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: getForm(body)
})
.then(resp => resp.json());
const getToken = (username, password) =>
post({
grant_type: 'password',
client_id: 'utcom',
username: username,
password: password
});
const updateToken = refresh_token =>
post({
grant_type: 'refresh_token',
client_id: 'utcom',
refresh_token
});
const setAuthorization = access_token =>
s.dispatch({type: 'EDIT_HEADERS', payload: {headers: JSON.stringify({Authorization: 'Bearer ' + access_token})}});
const updateHeader = tokens =>
(tokens ? updateToken(tokens.refresh_token): getToken(username, password))
.then(tokens => {
if(!tokens){
return;
}
setAuthorization(tokens.access_token);
setTimeout(() => updateHeader(tokens), timeout);
})
const until = (cond, cb) =>
cond() ? cb() : setTimeout(() => until(cond, cb), 500);
console.log('headers autofill started');
until(() => !!s, updateHeader);
]]></>).toString();
var c = Babel.transform(inline_src, { presets: [ "es2015", "es2016" ] });
eval(c.code);