diff --git a/console/ui/index.html b/console/ui/index.html index c0b1b13..1ae3b34 100644 --- a/console/ui/index.html +++ b/console/ui/index.html @@ -14,6 +14,7 @@ + @@ -410,44 +411,6 @@ currentInvoke: null }; - function authHeaders() { - return { - 'X-Auth-Token': localStorage.getItem('auth_token') || '', - 'X-Auth-Env': localStorage.getItem('auth_env') || 'test' - }; - } - - async function getJSON(url) { - const r = await fetch(url, { headers: authHeaders() }); - if (r.status === 401) { doLogout(); throw new Error('Сессия истекла'); } - if (!r.ok) { - let msg = ''; - try { - const body = await r.json(); - msg = body.error || JSON.stringify(body); - } catch (_) { - msg = await r.text(); - } - throw new Error(url + ': ' + r.status + (msg ? ' - ' + msg : '')); - } - return r.json(); - } - - async function requestJSON(url, method, body) { - const r = await fetch(url, { - method: method, - headers: Object.assign({ 'Content-Type': 'application/json' }, authHeaders()), - body: body ? JSON.stringify(body) : undefined - }); - if (r.status === 401) { doLogout(); throw new Error('Сессия истекла'); } - let data = {}; - try { data = await r.json(); } catch (_) { } - if (!r.ok) { - throw new Error(data.error || (url + ': ' + r.status)); - } - return data; - } - function setText(id, value) { document.getElementById(id).textContent = String(value); } diff --git a/console/ui/js/api.js b/console/ui/js/api.js new file mode 100644 index 0000000..56bca0d --- /dev/null +++ b/console/ui/js/api.js @@ -0,0 +1,39 @@ +/* api.js — HTTP-утилиты */ + +function authHeaders() { + return { + 'X-Auth-Token': localStorage.getItem('auth_token') || '', + 'X-Auth-Env': localStorage.getItem('auth_env') || 'test' + }; +} + +async function getJSON(url) { + const r = await fetch(url, { headers: authHeaders() }); + if (r.status === 401) { doLogout(); throw new Error('Сессия истекла'); } + if (!r.ok) { + let msg = ''; + try { + const body = await r.json(); + msg = body.error || JSON.stringify(body); + } catch (_) { + msg = await r.text(); + } + throw new Error(url + ': ' + r.status + (msg ? ' - ' + msg : '')); + } + return r.json(); +} + +async function requestJSON(url, method, body) { + const r = await fetch(url, { + method: method, + headers: Object.assign({ 'Content-Type': 'application/json' }, authHeaders()), + body: body ? JSON.stringify(body) : undefined + }); + if (r.status === 401) { doLogout(); throw new Error('Сессия истекла'); } + let data = {}; + try { data = await r.json(); } catch (_) { } + if (!r.ok) { + throw new Error(data.error || (url + ': ' + r.status)); + } + return data; +}