camstreamerlib
Version:
Helper library for CamStreamer ACAP applications.
70 lines (69 loc) • 2.84 kB
JavaScript
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));
}
}
}