TornAPI Quick Fill

Prefill API key and check 'pretty' radio buttons.

Versione datata 10/03/2019. Vedi la nuova versione l'ultima versione.

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         TornAPI Quick Fill
// @namespace    TornTos
// @version      2.1
// @description  Prefill API key and check 'pretty' radio buttons.
//               Makes available fields clickable and fires try it button when clicked.
//               Ctrl-Click to add multiple selections, try-it button will need to be click manually with this method.
// @author       tos
// @match       *.torn.com/api.html*
// @grant        none
// ==/UserScript==

const keyup = new Event('keyup')

GM_addStyle(`
span.click_select {
  cursor: pointer;
}
`)

const sections = {
  u: `https://api.torn.com/user/?selections=lookup&key=`,
  p: `https://api.torn.com/property/?selections=lookup&key=`,
  f: `https://api.torn.com/faction/?selections=lookup&key=`,
  c: `https://api.torn.com/company/?selections=lookup&key=`,
  i: `https://api.torn.com/market/?selections=lookup&key=`,
  t: `https://api.torn.com/torn/?selections=lookup&key=`
}

const fill_selections = async () => {
  for (const s in sections) {
    const res = await fetch(sections[s]+APIkey).then(r => r.json())
    document.querySelector(`p.${s}_fields`).innerHTML = `<small><strong>Available fields: </strong><span class="click_select">${res.selections.join('</span>, <span class="click_select">')}</span></small>`
  }
  document.querySelectorAll('span.click_select').forEach((span) => {
    span.addEventListener('click', (e) => {
      const panel = e.target.closest('div.panel-group')
      const selections_input = panel.querySelector('input[id*=selections]')
      if (e.ctrlKey) {
        if (selections_input.value === '') selections_input.value = e.target.innerText
        else selections_input.value += ','+e.target.innerText
      }
      else {
        selections_input.value = e.target.innerText
        panel.querySelector('BUTTON').click()
      }
      selections_input.dispatchEvent(keyup)
    })
  })
}

(()=>{
document.getElementById('documentation').style.display = 'none'
document.getElementById('demo').style.display = 'block'
$('#api_key').unbind('focusout')
$('.updateURL').unbind('keyup')
const api_key_input = document.getElementById('api_key')
api_key_input.value = localStorage.getItem('x_apikey') || ''
api_key_input.insertAdjacentHTML('afterend', `<button id="save_api_key">Save</button>`)
const save_button = document.querySelector('#save_api_key')
save_button.style.margin = '0em 0.5em'
save_button.addEventListener('click', (e) => {
  const apikey = api_key_input.value
  localStorage.setItem('x_apikey', apikey)
})
document.querySelectorAll('input[type=radio][value=pretty]').forEach((radio) => {radio.checked = true})
document.querySelectorAll('input[id*=id],input[id*=selections]').forEach((input) => {
  input.addEventListener('keyup', (e)=> {
    const panel = e.target.closest('div.panel-group')
    const url_shown = document.querySelector(`#${e.target.getAttribute('data-field')}url`)
    const url_split = url_shown.innerText.split('/')
    url_split[4] = `${panel.querySelector('input[id*=id]').value}?selections=${panel.querySelector('input[id*=selections]').value}&key=`
    url_shown.innerText = url_split.join('/')
  })
})
fill_selections()
})();