UNPKG

camstreamerlib

Version:

Helper library for CamStreamer ACAP applications.

70 lines (69 loc) 2.84 kB
import { responseStringify } from './internal/utils'; import { cameraTimeResponseSchema, camscripterApiResponseSchema, nodeStateSchema, packageInfoListSchema, storageSchema, } from './types/CamScripterAPI'; import { networkCameraListSchema } from './types/common'; export const BASE_URL = '/local/camscripter'; export class CamScripterAPI { client; constructor(client) { this.client = client; } static getProxyUrlPath = () => `${BASE_URL}/proxy.cgi`; async checkCameraTime() { const data = await this.get(`${BASE_URL}/camera_time.cgi`); return cameraTimeResponseSchema.parse(data).state; } async getNetworkCameraList() { const data = await this.get(`${BASE_URL}/network_camera_list.cgi`); return networkCameraListSchema.parse(data.camera_list); } async getStorageInfo() { const data = await this.get(`${BASE_URL}/package/get_storage.cgi`); return storageSchema.parse(data); } async getPackageList() { const data = await this.get(`${BASE_URL}/package/list.cgi`); return packageInfoListSchema.parse(data); } async installPackages(formData, storage) { const data = await this.post(`${BASE_URL}/package/install.cgi?storage=${storage}`, formData); return camscripterApiResponseSchema.parse(data); } async uninstallPackage(packageId) { const data = await this.get(`${BASE_URL}/package/remove.cgi?package_name=${packageId}`); return camscripterApiResponseSchema.parse(data); } async importSettings(packageId, formData) { const data = await this.post(`${BASE_URL}/package/data.cgi?action=IMPORT&package_name=${packageId}`, formData); return camscripterApiResponseSchema.parse(data); } async exportSettings(packageId, formData) { const data = await this.post(`${BASE_URL}/package/data.cgi?action=EXPORT&package_name=${packageId}`, formData); return camscripterApiResponseSchema.parse(data); } async getNodejsStatus() { const data = await this.get(`${BASE_URL}/diagnostics.cgi`); return nodeStateSchema.parse(data); } async installNodejs(storage) { const data = await this.get(`${BASE_URL}/node_update.cgi?storage=${storage}`); return camscripterApiResponseSchema.parse(data); } async get(path, params) { const res = await this.client.get(path, params); if (res.ok) { return await res.json(); } else { throw new Error(await responseStringify(res)); } } async post(path, data, params) { const res = await this.client.post(path, data, params); if (res.ok) { return await res.json(); } else { throw new Error(await responseStringify(res)); } } }