UNPKG

ts-onvif

Version:

Client to ONVIF devices

131 lines 4.89 kB
"use strict"; /** * AccessRules ver10 module * @author Andrew D.Laptev <a.d.laptev@gmail.com> * @see https://www.onvif.org/ver10/accessrules/wsdl/accessrules.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")); /** * AccessRules service * @example * ```ts * const list = await cam.accessRules.getAccessProfileInfoList(); * const token = list.accessProfileInfo![0].token; * console.log((await cam.accessRules.getAccessProfiles({ token: [token] })).accessProfile); * ``` */ class AccessRules extends service_1.default { constructor(onvif) { super(onvif, 'accessrules'); } static accessPolicyToBuild(policy) { return { ScheduleToken: policy.scheduleToken, Entity: policy.entity, ...(policy.entityType !== undefined && { EntityType: policy.entityType }), ...(policy.extension && { Extension: policy.extension }), }; } static accessProfileInfoToBuild(profile) { return { $: { token: profile.token }, Name: profile.name, ...(profile.description && { Description: profile.description }), }; } static accessProfileToBuild(profile) { return { ...AccessRules.accessProfileInfoToBuild(profile), ...(profile.accessPolicy && { AccessPolicy: profile.accessPolicy.map(AccessRules.accessPolicyToBuild), }), ...(profile.extension && { Extension: profile.extension }), }; } /** * Returns the capabilities of the access rules service. */ async getServiceCapabilities() { const response = await this.request({ GetServiceCapabilities: {} }); return response.getServiceCapabilitiesResponse?.capabilities ?? {}; } /** * Returns access profile info items for the requested tokens. * @param options */ async getAccessProfileInfo({ token }) { const response = await this.request({ GetAccessProfileInfo: { Token: token } }, { array: ['accessProfileInfo'] }); return response.getAccessProfileInfoResponse ?? {}; } /** * Returns a list of access profile info items. * @param options */ async getAccessProfileInfoList(options = {}) { const response = await this.request({ GetAccessProfileInfoList: { ...(options.limit !== undefined && { Limit: options.limit }), ...(options.startReference && { StartReference: options.startReference }), }, }, { array: ['accessProfileInfo'] }); return response.getAccessProfileInfoListResponse ?? {}; } /** * Returns access profile items for the requested tokens. * @param options */ async getAccessProfiles({ token }) { const response = await this.request({ GetAccessProfiles: { Token: token } }, { array: ['accessProfile', 'accessPolicy'] }); return response.getAccessProfilesResponse ?? {}; } /** * Returns a list of access profile items. * @param options */ async getAccessProfileList(options = {}) { const response = await this.request({ GetAccessProfileList: { ...(options.limit !== undefined && { Limit: options.limit }), ...(options.startReference && { StartReference: options.startReference }), }, }, { array: ['accessProfile', 'accessPolicy'] }); return response.getAccessProfileListResponse ?? {}; } /** * Creates a new access profile. * @param options */ async createAccessProfile({ accessProfile }) { const response = await this.request({ CreateAccessProfile: { AccessProfile: AccessRules.accessProfileToBuild(accessProfile) }, }); return response.createAccessProfileResponse.token; } /** * Creates or replaces an access profile (requires ClientSuppliedTokenSupported). * @param options */ async setAccessProfile({ accessProfile }) { await this.request({ SetAccessProfile: { AccessProfile: AccessRules.accessProfileToBuild(accessProfile) } }); } /** * Modifies an existing access profile. * @param options */ async modifyAccessProfile({ accessProfile }) { await this.request({ ModifyAccessProfile: { AccessProfile: AccessRules.accessProfileToBuild(accessProfile) } }); } /** * Deletes an access profile. * @param options */ async deleteAccessProfile({ token }) { await this.request({ DeleteAccessProfile: { Token: token } }); } } exports.default = AccessRules; //# sourceMappingURL=accessrules.js.map