@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
90 lines • 11.3 kB
JavaScript
import { Injectable } from '@angular/core';
import { DeviceRegistrationService, InventoryService } from '@c8y/client';
import { AppStateService, gettext } from '@c8y/ngx-components';
import { head } from 'lodash-es';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/ngx-components";
import * as i2 from "@c8y/client";
export class SensorPhoneService {
constructor(ui, inventoryService, deviceRegistrationService) {
this.ui = ui;
this.inventoryService = inventoryService;
this.deviceRegistrationService = deviceRegistrationService;
this.HTTP_STATUS_CODE = {
OK: 200,
CREATED: 201
};
this.PHONE_GROUP_FRAGMENT = 'c8y_IsSensorPhoneGroup';
this.PHONE_GROUP_NAME = gettext('Phones');
this.ui.currentTenant.subscribe(data => {
if (data) {
this.domainName = data.domainName;
this.tenantId = data.name;
}
});
}
getHost() {
return this.domainName.substring(this.domainName.indexOf('.') + 1);
}
getTenantName() {
return this.domainName.split('.')[0];
}
getTenantId() {
return this.tenantId;
}
async checkPhoneGroupExists() {
const { data, res } = await this.inventoryService.list({
fragmentType: this.PHONE_GROUP_FRAGMENT
});
if (data && res && res.status === this.HTTP_STATUS_CODE.OK) {
return head(data);
}
return null;
}
async addPhoneGroup() {
const group = await this.checkPhoneGroupExists();
if (group) {
return group;
}
return await this.createPhoneGroup();
}
async createPhoneGroup() {
const newPhoneGroup = {
c8y_Global: {},
c8y_IsDeviceGroup: {},
type: 'c8y_DeviceGroup',
name: this.PHONE_GROUP_NAME,
[this.PHONE_GROUP_FRAGMENT]: {}
};
const { data, res } = await this.inventoryService.create(newPhoneGroup);
if (data && res && res.status === this.HTTP_STATUS_CODE.CREATED) {
return data;
}
return null;
}
generateRegistrationData(deviceId) {
const res = 'c8y://' + this.getTenantName() + '.' + this.getHost() + '/?deviceId=' + deviceId;
return res;
}
async createPhoneRegistrationRequest(deviceId) {
const group = await this.addPhoneGroup();
const device = { id: deviceId, groupId: group.id };
const { res } = await this.deviceRegistrationService.create(device);
if (res.status !== this.HTTP_STATUS_CODE.CREATED) {
throw res;
}
}
async acceptPhoneRegistrationRequest(deviceId) {
const { res } = await this.deviceRegistrationService.accept(deviceId);
if (res.status !== this.HTTP_STATUS_CODE.OK) {
throw res;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SensorPhoneService, deps: [{ token: i1.AppStateService }, { token: i2.InventoryService }, { token: i2.DeviceRegistrationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SensorPhoneService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SensorPhoneService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: () => [{ type: i1.AppStateService }, { type: i2.InventoryService }, { type: i2.DeviceRegistrationService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vuc29yLXBob25lLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zZW5zb3ItcGhvbmUvc2Vuc29yLXBob25lLW1vZGFsL3NlbnNvci1waG9uZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHlCQUF5QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQzs7OztBQUdqQyxNQUFNLE9BQU8sa0JBQWtCO0lBVTdCLFlBQ1UsRUFBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLHlCQUFvRDtRQUZwRCxPQUFFLEdBQUYsRUFBRSxDQUFpQjtRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDhCQUF5QixHQUF6Qix5QkFBeUIsQ0FBMkI7UUFackQscUJBQWdCLEdBQUc7WUFDMUIsRUFBRSxFQUFFLEdBQUc7WUFDUCxPQUFPLEVBQUUsR0FBRztTQUNiLENBQUM7UUFHTSx5QkFBb0IsR0FBRyx3QkFBd0IsQ0FBQztRQUN2QyxxQkFBZ0IsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFPcEQsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO2dCQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxPQUFPLElB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QUMsQ0FBQztRQUN0RSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7K0dBekZVLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlLCBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBoZWFkIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBTZW5zb3JQaG9uZVNlcnZpY2Uge1xuICByZWFkb25seSBIVFRQX1NUQVRVU19DT0RFID0ge1xuICAgIE9LOiAyMDAsXG4gICAgQ1JFQVRFRDogMjAxXG4gIH07XG4gIHByaXZhdGUgZG9tYWluTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHRlbmFudElkOiBzdHJpbmc7XG4gIHByaXZhdGUgUEhPTkVfR1JPVVBfRlJBR01FTlQgPSAnYzh5X0lzU2Vuc29yUGhvbmVHcm91cCc7XG4gIHByaXZhdGUgcmVhZG9ubHkgUEhPTkVfR1JPVVBfTkFNRSA9IGdldHRleHQoJ1Bob25lcycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdWk6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeVNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlOiBEZXZpY2VSZWdpc3RyYXRpb25TZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudWkuY3VycmVudFRlbmFudC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICBpZiAoZGF0YSkge1xuICAgICAgICB0aGlzLmRvbWFpbk5hbWUgPSBkYXRhLmRvbWFpbk5hbWU7XG4gICAgICAgIHRoaXMudGVuYW50SWQgPSBkYXRhLm5hbWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRIb3N0KCkge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUuc3Vic3RyaW5nKHRoaXMuZG9tYWluTmFtZS5pbmRleE9mKCcuJykgKyAxKTtcbiAgfVxuXG4gIGdldFRlbmFudE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZG9tYWluTmFtZS5zcGxpdCgnLicpWzBdO1xuICB9XG5cbiAgZ2V0VGVuYW50SWQoKSB7XG4gICAgcmV0dXJuIHRoaXMudGVuYW50SWQ7XG4gIH1cblxuICBhc3luYyBjaGVja1Bob25lR3JvdXBFeGlzdHMoKSB7XG4gICAgY29uc3QgeyBkYXRhLCByZXMgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5saXN0KHtcbiAgICAgIGZyYWdtZW50VHlwZTogdGhpcy5QSE9ORV9HUk9VUF9GUkFHTUVOVFxuICAgIH0pO1xuICAgIGlmIChkYXRhICYmIHJlcyAmJiByZXMuc3RhdHVzID09PSB0aGlzLkhUVFBfU1RBVFVTX0NPREUuT0spIHtcbiAgICAgIHJldHVybiBoZWFkKGRhdGEpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGFkZFBob25lR3JvdXAoKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBhd2FpdCB0aGlzLmNoZWNrUGhvbmVHcm91cEV4aXN0cygpO1xuICAgIGlmIChncm91cCkge1xuICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVQaG9uZUdyb3VwKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVQaG9uZUdyb3VwKCkge1xuICAgIGNvbnN0IG5ld1Bob25lR3JvdXAgPSB7XG4gICAgICBjOHlfR2xvYmFsOiB7fSxcbiAgICAgIGM4eV9Jc0RldmljZUdyb3VwOiB7fSxcbiAgICAgIHR5cGU6ICdjOHlfRGV2aWNlR3JvdXAnLFxuICAgICAgbmFtZTogdGhpcy5QSE9ORV9HUk9VUF9OQU1FLFxuICAgICAgW3RoaXMuUEhPTkVfR1JPVVBfRlJBR01FTlRdOiB7fVxuICAgIH07XG5cbiAgICBjb25zdCB7IGRhdGEsIHJlcyB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmNyZWF0ZShuZXdQaG9uZUdyb3VwKTtcbiAgICBpZiAoZGF0YSAmJiByZXMgJiYgcmVzLnN0YXR1cyA9PT0gdGhpcy5IVFRQX1NUQVRVU19DT0RFLkNSRUFURUQpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdlbmVyYXRlUmVnaXN0cmF0aW9uRGF0YShkZXZpY2VJZCkge1xuICAgIGNvbnN0IHJlcyA9ICdjOHk6Ly8nICsgdGhpcy5nZXRUZW5hbnROYW1lKCkgKyAnLicgKyB0aGlzLmdldEhvc3QoKSArICcvP2RldmljZUlkPScgKyBkZXZpY2VJZDtcbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUGhvbmVSZWdpc3RyYXRpb25SZXF1ZXN0KGRldmljZUlkKSB7XG4gICAgY29uc3QgZ3JvdXAgPSBhd2FpdCB0aGlzLmFkZFBob25lR3JvdXAoKTtcbiAgICBjb25zdCBkZXZpY2UgPSB7IGlkOiBkZXZpY2VJZCwgZ3JvdXBJZDogZ3JvdXAuaWQgfTtcblxuICAgIGNvbnN0IHsgcmVzIH0gPSBhd2FpdCB0aGlzLmRldmljZVJlZ2lzdHJhdGlvblNlcnZpY2UuY3JlYXRlKGRldmljZSk7XG4gICAgaWYgKHJlcy5zdGF0dXMgIT09IHRoaXMuSFRUUF9TVEFUVVNfQ09ERS5DUkVBVEVEKSB7XG4gICAgICB0aHJvdyByZXM7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYWNjZXB0UGhvbmVSZWdpc3RyYXRpb25SZXF1ZXN0KGRldmljZUlkKSB7XG4gICAgY29uc3QgeyByZXMgfSA9IGF3YWl0IHRoaXMuZGV2aWNlUmVnaXN0cmF0aW9uU2VydmljZS5hY2NlcHQoZGV2aWNlSWQpO1xuICAgIGlmIChyZXMuc3RhdHVzICE9PSB0aGlzLkhUVFBfU1RBVFVTX0NPREUuT0spIHtcbiAgICAgIHRocm93IHJlcztcbiAgICB9XG4gIH1cbn1cbiJdfQ==