NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name -X_API // @namespace namespace // @version 0.1 // @description API key input and general api call function // @author tos // @license MIT // @match *.torn.com/* // @grant GM_addStyle // ==/UserScript== //localStorage.removeItem('x_api_key') GM_addStyle(` #x_api { background-color: #ead1d1; border-radius: 0.5em; display: flex; flex-direction: column; justify-content: center; margin: 1em; padding: 0.5em; position: fixed; right: 0; visibility: hidden; } #x_api > * { padding: 0.3em } #x_api span { cursor: pointer; position: absolute; right: 0.1em; top: 0.1em; } #x_api strong { margin: auto; } #x_api input { text-align: center; } #x_api_error { cursor: pointer; color: #FF9F9F; font-size: 1.1em; padding:0.5em; position: fixed; right: 0; visibility: hidden; } `) if (document.querySelector('#x_api') === null) { document.querySelector('body').insertAdjacentHTML('afterbegin', ` <div id="x_api"> <span>X</span> <strong>API Key</strong> <input type="text"> <p></p> </div> <div id="x_api_error"><strong>API ERROR: </strong><span></span></div> `) } let api_key = localStorage.getItem('x_api_key') const torn_api = async (args) => { const a = args.split('.'); if (a.length !== 3) throw (`Bad argument in torn_api(args, key): ${args}`) const res = await fetch(`https://api.torn.com/${a[0]}/${a[1]}?selections=${a[2]}&key=${api_key}`) const r = await res.json() if (r.error) { console.error('API ERROR', r.error) switch (r.error.code) { case 1: case 2: localStorage.removeItem('x_api_key') document.querySelector('#x_api p').innerText = r.error.code + ' - ' + r.error.error document.querySelector('#x_api').style.visibility = 'visible' break default: document.querySelector('#x_api_error span').innerText = r.error.code + ' - ' + r.error.error document.querySelector('#x_api_error').style.visibility = 'visible' break } } return r } document.querySelector('#x_api span').addEventListener('click', (e) => { document.querySelector('#x_api').style.visibility = 'hidden' }) document.querySelector('#x_api input').addEventListener('change', (e) => { api_key = e.target.value torn_api('user..basic').then((r) => { if (r.player_id) { localStorage.setItem('x_api_key', api_key) document.querySelector('#x_api').style.visibility = 'hidden' } }) }) if (!api_key) document.querySelector('#x_api').style.visibility = 'visible' document.querySelector('#x_api_error').addEventListener('click', (e) => { window.open('https://api.torn.com/', '_blank') })