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