UNPKG

@tak-ps/node-tak

Version:

Lightweight JavaScript library for communicating with TAK Server

82 lines 2.73 kB
import { TAKList } from './types.js'; import { Type } from '@sinclair/typebox'; import Commands, { CommandOutputFormat } from '../commands.js'; export const Injector = Type.Object({ uid: Type.String(), toInject: Type.String() }); export const TAKList_Injector = TAKList(Injector); export default class InjectorCommands extends Commands { schema = { list: { description: 'List Injectors', params: Type.Object({}), query: Type.Object({}), formats: [CommandOutputFormat.JSON] } }; async cli(args) { if (args._[3] === 'list') { const list = await this.list(); if (args.format === 'json') { return list; } else { return list.data.map((injector) => { return `${injector.uid} - ${injector.toInject}`; }).join('\n'); } } else { throw new Error('Unsupported Subcommand'); } } /** * Return a list of all configured COT Injectors * * {@link https://docs.tak.gov/api/takserver/redoc#tag/injection-api/operation/getAllCotInjectors TAK Server Docs}. */ async list() { const url = new URL('/Marti/api/injectors/cot/uid', this.api.url); return await this.api.fetch(url, { method: 'GET' }); } /** * Return a sing configured COT Injectors for a given UID * * {@link https://docs.tak.gov/api/takserver/redoc#tag/injection-api/operation/getOneCotInjector TAK Server Docs}. */ async get(uid) { const url = new URL(`/Marti/api/injectors/cot/uid/${encodeURIComponent(uid)}`, this.api.url); return await this.api.fetch(url, { method: 'GET' }); } /** * Remove a COT Injector * * {@link https://docs.tak.gov/api/takserver/redoc#tag/injection-api/operation/putCotInjector TAK Server Docs}. */ async create(injector) { const url = new URL('/Marti/api/injectors/cot/uid', this.api.url); return await this.api.fetch(url, { method: 'POST', body: injector }); } /** * Remove a COT Injector * * {@link https://docs.tak.gov/api/takserver/redoc#tag/injection-api/operation/deleteInjector TAK Server Docs}. */ async delete(injector) { const url = new URL('/Marti/api/injectors/cot/uid', this.api.url); url.searchParams.append('uid', injector.uid); url.searchParams.append('toInject', injector.toInject); return await this.api.fetch(url, { method: 'DELETE' }); } } //# sourceMappingURL=injectors.js.map