UNPKG

lavva.exalushome.webcams

Version:

Library implementing webcams and abstraction layers for webcams configuration API in ExalusHome system

107 lines 4.95 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { WebCamConfiguration } from "./IWebCamsService"; import { DataFrame, Method, Status } from "lavva.exalushome/build/js/DataFrame"; import { ExalusConnectionService } from 'lavva.exalushome/build/js/Services/ExalusConnectionService'; import { Api } from 'lavva.exalushome'; import { DevicesService } from 'lavva.exalushome/build/js/Services/Devices/DevicesService'; import { WebApiCacheService } from 'lavva.exalushome/build/js/Services/WebApi/WebApiCacheService'; import { WebCam } from "./WebCam"; import { DependencyContainer } from "lavva.exalushome/build/js/DependencyContainer"; import { LoggerService } from "lavva.exalushome/build/js/Services/Logging/LoggerService"; export class WebCamsService { constructor() { this._connection = Api.Get(ExalusConnectionService.ServiceName); this._devices = Api.Get(DevicesService.ServiceName); this._cache = Api.Get(WebApiCacheService.ServiceName); } GetServiceName() { return WebCamsService.ServiceName; } static Init() { DependencyContainer.Instance.RegisterService(new WebCamsService()); Api.Get(LoggerService.ServiceName).Debug(WebCamsService.ServiceName, "Initialized WebCamsService"); } GetWebCamAsync(device) { return __awaiter(this, void 0, void 0, function* () { let cam = new WebCam(); cam.SetDeviceChannel(device.Channels.first()); return cam; }); } GetWebCamConfigurationAsync(device) { return __awaiter(this, void 0, void 0, function* () { let result = yield this._connection.SendAndWaitForResponseAsync(new GetWebCamConfigurationRequest(device), 10000, false, true); switch (result.Status) { case Status.OK: return result.Data; default: throw new Error(`Failed to get camera configuration. Status: ${result.Status}.`); } }); } CreateNewWebCamAsync(data) { return __awaiter(this, void 0, void 0, function* () { let result = yield this._connection.SendAndWaitForResponseAsync(new CreateNewCameraRequest(data.RtspUrl, data.UserName, data.Password), 10000, false, true); switch (result.Status) { case Status.OK: this._cache.ClearCache(); yield this._devices.GetDevicesAsync(); var cameraDeviceGuid = result.Data; return this._devices.GetDevice(cameraDeviceGuid); default: throw new Error(`Failed to create new camera. Status: ${result.Status}.`); } }); } SetWebCamConfigurationAsync(device, configuration) { return __awaiter(this, void 0, void 0, function* () { let result = yield this._connection.SendAndWaitForResponseAsync(new UpdateCameraDataRequest(device, configuration.RtspUrl, configuration.UserName, configuration.Password), 10000, false, true); if (result.Status == Status.OK) { this._cache.ClearCache(); yield this._devices.GetDevicesAsync(); } return result.Status; }); } } WebCamsService.ServiceName = "WebCamsService"; class GetWebCamConfigurationRequest extends DataFrame { constructor(device) { super(); this.Method = Method.Get; this.Resource = `/webcams/webcam/get`; this.Data = device.Guid; } } class UpdateCameraDataRequest extends DataFrame { constructor(device, url, user, password) { super(); this.Method = Method.Put; this.Resource = "/webcams/webcam/upsert"; this.Data = new WebCamConfiguration(); this.Data.Guid = device.Guid; this.Data.RtspUrl = url; this.Data.UserName = user; this.Data.Password = password; } } class CreateNewCameraRequest extends DataFrame { constructor(url, user, password) { super(); this.Method = Method.Put; this.Resource = "/webcams/webcam/upsert"; this.Data = new WebCamConfiguration(); this.Data.RtspUrl = url; this.Data.UserName = user; this.Data.Password = password; } } //# sourceMappingURL=WebCamsService.js.map