22 lines
789 B
JavaScript
22 lines
789 B
JavaScript
|
|
const BASE = '/api'
|
||
|
|
|
||
|
|
async function req(method, path, body) {
|
||
|
|
const opts = { method, headers: { 'Content-Type': 'application/json' } }
|
||
|
|
if (body) opts.body = JSON.stringify(body)
|
||
|
|
const r = await fetch(BASE + path, opts)
|
||
|
|
if (!r.ok) throw new Error(`${method} ${path} → ${r.status}`)
|
||
|
|
return r.json()
|
||
|
|
}
|
||
|
|
|
||
|
|
export const api = {
|
||
|
|
health: () => req('GET', '/healthz'),
|
||
|
|
peers: () => req('GET', '/peers'),
|
||
|
|
routes: () => req('GET', '/routes'),
|
||
|
|
scenarios: () => req('GET', '/scenarios'),
|
||
|
|
loadScenario: name => req('POST', `/scenario/${name}`),
|
||
|
|
unloadScenario: name => req('DELETE', `/scenario/${name}`),
|
||
|
|
announce: payload => req('POST', '/announce', payload),
|
||
|
|
withdraw: prefixes => req('POST', '/withdraw', { prefixes }),
|
||
|
|
withdrawAll: () => req('POST', '/withdraw/all'),
|
||
|
|
}
|