ts-onvif
Version:
Client to ONVIF devices
235 lines • 8.58 kB
JavaScript
;
/**
* 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