UNPKG

ts-onvif

Version:

Client to ONVIF devices

235 lines 8.58 kB
"use strict"; /** * Schedule ver10 module * @author Andrew D.Laptev <a.d.laptev@gmail.com> * @see https://www.onvif.org/ver10/schedule/wsdl/schedule.wsdl */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const service_1 = __importDefault(require("./service")); /** * Schedule service * @example * ```ts * const list = await cam.schedule.getScheduleInfoList(); * const token = list.scheduleInfo![0].token; * console.log((await cam.schedule.getScheduleState({ token })).active); * ``` */ class Schedule extends service_1.default { constructor(onvif) { super(onvif, 'schedule'); } static timePeriodToBuild(period) { return { From: period.from, ...(period.until !== undefined && { Until: period.until }), ...(period.extension && { Extension: period.extension }), }; } static specialDaysScheduleToBuild(specialDays) { return { GroupToken: specialDays.groupToken, ...(specialDays.timeRange && { TimeRange: specialDays.timeRange.map(Schedule.timePeriodToBuild), }), ...(specialDays.extension && { Extension: specialDays.extension }), }; } static scheduleInfoToBuild(schedule) { return { $: { token: schedule.token }, Name: schedule.name, ...(schedule.description && { Description: schedule.description }), }; } static scheduleToBuild(schedule) { return { ...Schedule.scheduleInfoToBuild(schedule), Standard: schedule.standard, ...(schedule.specialDays && { SpecialDays: schedule.specialDays.map(Schedule.specialDaysScheduleToBuild), }), ...(schedule.extension && { Extension: schedule.extension }), }; } static specialDayGroupInfoToBuild(group) { return { $: { token: group.token }, Name: group.name, ...(group.description && { Description: group.description }), }; } static specialDayGroupToBuild(group) { return { ...Schedule.specialDayGroupInfoToBuild(group), ...(group.days !== undefined && { Days: group.days }), ...(group.extension && { Extension: group.extension }), }; } /** * Returns the capabilities of the schedule service. */ async getServiceCapabilities() { const response = await this.request({ GetServiceCapabilities: {} }); return response.getServiceCapabilitiesResponse?.capabilities ?? {}; } /** * Returns the current state of a schedule. * @param options */ async getScheduleState({ token }) { const response = await this.request({ GetScheduleState: { Token: token } }); return response.getScheduleStateResponse.scheduleState; } /** * Returns schedule info items for the requested tokens. * @param options */ async getScheduleInfo({ token }) { const response = await this.request({ GetScheduleInfo: { Token: token } }, { array: ['scheduleInfo'] }); return response.getScheduleInfoResponse || {}; } /** * Returns a list of schedule info items. * @param options */ async getScheduleInfoList(options = {}) { const response = await this.request({ GetScheduleInfoList: { ...(options.limit !== undefined && { Limit: options.limit }), ...(options.startReference && { StartReference: options.startReference }), }, }, { array: ['scheduleInfo'] }); return response.getScheduleInfoListResponse || {}; } /** * Returns schedule items for the requested tokens. * @param options */ async getSchedules({ token }) { const response = await this.request({ GetSchedules: { Token: token } }, { array: ['schedule', 'specialDays', 'timeRange'] }); return response.getSchedulesResponse || {}; } /** * Returns a list of schedule items. * @param options */ async getScheduleList(options = {}) { const response = await this.request({ GetScheduleList: { ...(options.limit !== undefined && { Limit: options.limit }), ...(options.startReference && { StartReference: options.startReference }), }, }, { array: ['schedule', 'specialDays', 'timeRange'] }); return response.getScheduleListResponse || {}; } /** * Creates a new schedule. * @param options */ async createSchedule({ schedule }) { const response = await this.request({ CreateSchedule: { Schedule: Schedule.scheduleToBuild(schedule) } }); return response.createScheduleResponse.token; } /** * Creates or replaces a schedule (requires ClientSuppliedTokenSupported). * @param options */ async setSchedule({ schedule }) { await this.request({ SetSchedule: { Schedule: Schedule.scheduleToBuild(schedule) } }); } /** * Modifies an existing schedule. * @param options */ async modifySchedule({ schedule }) { await this.request({ ModifySchedule: { Schedule: Schedule.scheduleToBuild(schedule) } }); } /** * Deletes a schedule. * @param options */ async deleteSchedule({ token }) { await this.request({ DeleteSchedule: { Token: token } }); } /** * Returns special day group info items for the requested tokens. * @param options */ async getSpecialDayGroupInfo({ token }) { const response = await this.request({ GetSpecialDayGroupInfo: { Token: token } }, { array: ['specialDayGroupInfo'] }); return response.getSpecialDayGroupInfoResponse || {}; } /** * Returns a list of special day group info items. * @param options */ async getSpecialDayGroupInfoList(options = {}) { const response = await this.request({ GetSpecialDayGroupInfoList: { ...(options.limit !== undefined && { Limit: options.limit }), ...(options.startReference && { StartReference: options.startReference }), }, }, { array: ['specialDayGroupInfo'] }); return response.getSpecialDayGroupInfoListResponse || {}; } /** * Returns special day group items for the requested tokens. * @param options */ async getSpecialDayGroups({ token }) { const response = await this.request({ GetSpecialDayGroups: { Token: token } }, { array: ['specialDayGroup'] }); return response.getSpecialDayGroupsResponse || {}; } /** * Returns a list of special day group items. * @param options */ async getSpecialDayGroupList(options = {}) { const response = await this.request({ GetSpecialDayGroupList: { ...(options.limit !== undefined && { Limit: options.limit }), ...(options.startReference && { StartReference: options.startReference }), }, }, { array: ['specialDayGroup'] }); return response.getSpecialDayGroupListResponse || {}; } /** * Creates a new special day group. * @param options */ async createSpecialDayGroup({ specialDayGroup, }) { const response = await this.request({ CreateSpecialDayGroup: { SpecialDayGroup: Schedule.specialDayGroupToBuild(specialDayGroup) }, }); return response.createSpecialDayGroupResponse.token; } /** * Creates or replaces a special day group (requires ClientSuppliedTokenSupported). * @param options */ async setSpecialDayGroup({ specialDayGroup }) { await this.request({ SetSpecialDayGroup: { SpecialDayGroup: Schedule.specialDayGroupToBuild(specialDayGroup) } }); } /** * Modifies an existing special day group. * @param options */ async modifySpecialDayGroup({ specialDayGroup }) { await this.request({ ModifySpecialDayGroup: { SpecialDayGroup: Schedule.specialDayGroupToBuild(specialDayGroup) }, }); } /** * Deletes a special day group. * @param options */ async deleteSpecialDayGroup({ token }) { await this.request({ DeleteSpecialDayGroup: { Token: token } }); } } exports.default = Schedule; //# sourceMappingURL=schedule.js.map