@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
61 lines • 9.95 kB
JavaScript
import { ApplicationType } from '@c8y/client';
import { gettext } from '@c8y/ngx-components';
import { flatMap } from 'lodash-es';
export class BaseExtensibleDeviceRegistrationService {
constructor(applicationService, stateService) {
this.applicationService = applicationService;
this.stateService = stateService;
}
getMetadataUrl(contextPath) {
return `${this.getServiceBaseUrl(contextPath)}/metadata`;
}
getServiceBaseUrl(contextPath) {
if (!contextPath || contextPath.length === 0) {
throw new Error(gettext('The URL of the microservice is misconfigured. A context path is missing.'));
}
return `/service/${contextPath}/deviceRegistration`;
}
async getDeviceRegistrationProviders(bulk) {
let providers = [];
const microservices = await this.listMicroservicesByUser();
if (microservices && microservices.length > 0) {
providers = this.getProvidersFromManifestExtensions(microservices, bulk).concat(this.getProvidersFromExtensions(microservices, bulk));
}
return providers;
}
async listMicroservicesByUser() {
const { data } = await this.applicationService.listByUser(this.stateService?.currentUser?.value?.userName, {
dropOverwrittenApps: true,
noPaging: true,
pageSize: 100,
withTotalPages: true
});
return data?.filter(({ type }) => type === ApplicationType.MICROSERVICE);
}
getProvidersFromManifestExtensions(applications, bulk) {
return flatMap(applications, application => {
return application?.manifest?.extensions?.map(extension => {
return { ...extension, contextPath: application.contextPath };
});
}).filter(provider => this.appSupportingExtensibleDeviceRegistrationForm(provider, bulk));
}
getProvidersFromExtensions(applications, bulk) {
return flatMap(applications, application => {
return application.extensions?.map(extension => {
return {
...extension,
contextPath: application.contextPath
};
});
}).filter(provider => this.appSupportingExtensibleDeviceRegistrationForm(provider, bulk));
}
appSupportingExtensibleDeviceRegistrationForm(extension, bulk) {
if (bulk) {
return extension?.type === 'extensibleBulkDeviceRegistration';
}
else {
return extension?.type === 'extensibleDeviceRegistration';
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1leHRlbnNpYmxlLWRldmljZS1yZWdpc3RyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9leHRlbnNpYmxlL2Jhc2UtZXh0ZW5zaWJsZS1kZXZpY2UtcmVnaXN0cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixlQUFlLEVBQWdCLE1BQU0sYUFBYSxDQUFDO0FBQ2hGLE9BQU8sRUFBbUIsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQU1wQyxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELFlBQ1ksa0JBQXNDLEVBQ3RDLFlBQTZCO1FBRDdCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQWlCO0lBQ3RDLENBQUM7SUFFTSxjQUFjLENBQUMsV0FBbUI7UUFDMUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDO0lBQzNELENBQUM7SUFFUyxpQkFBaUIsQ0FBQyxXQUFtQjtRQUM3QyxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FDYixPQUFPLENBQUMsMEVBQTBFLENBQUMsQ0FDcEYsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFlBQVksV0FBVyxxQkFBcUIsQ0FBQztJQUN0RCxDQUFDO0lBRVMsS0FBSyxDQUFDLDhCQUE4QixDQUM1QyxJQUFhO1FBRWIsSUFBSSxTQUFTLEdBQTJDLEVBQUUsQ0FBQztRQUMzRCxNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQzNELElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUMsU0FBUyxHQUFHLElBQUksQ0FBQyxrQ0FBa0MsQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUM3RSxJQUFJLENBQUMsMEJBQTBCLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUNyRCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFTyxLQUFLLENBQUMsdUJBQXVCO1FBQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQ3ZELElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQy9DO1lBQ0UsbUJBQW1CLEVBQUUsSUFBSTtZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxHQUFHO1lBQ2IsY0FBYyxFQUFFLElBQUk7U0FDckIsQ0FDRixDQUFDO1FBQ0YsT0FBTyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sa0NBQWtDLENBQ3hDLFlBQTRCLEVBQzVCLElBQWE7UUFFYixPQUFPLE9BQU8sQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDekMsT0FBTyxXQUFXLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3hELE9BQU8sRUFBRSxHQUFHLFNBQVMsRUFBRSxXQUFXLEVBQUUsV0FBVyxDQUFDLFdBQVcsRUFBMEIsQ0FBQztZQUN4RixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyw2Q0FBNkMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRU8sMEJBQTBCLENBQ2hDLFlBQTRCLEVBQzVCLElBQWE7UUFFYixPQUFPLE9BQU8sQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLEVBQUU7WUFDekMsT0FBTyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDN0MsT0FBTztvQkFDTCxHQUFHLFNBQVM7b0JBQ1osV0FBVyxFQUFFLFdBQVcsQ0FBQyxXQUFXO2lCQUNHLENBQUM7WUFDNUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsNkNBQTZDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVPLDZDQUE2QyxDQUNuRCxTQUErQyxFQUMvQyxJQUFhO1FBRWIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sU0FBUyxFQUFFLElBQUksS0FBSyxrQ0FBa0MsQ0FBQztRQUNoRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sU0FBUyxFQUFFLElBQUksS0FBSyw4QkFBOEIsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25TZXJ2aWNlLCBBcHBsaWNhdGlvblR5cGUsIElBcHBsaWNhdGlvbiB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSwgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgZmxhdE1hcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBBcHBsaWNhdGlvbkV4dGVuc2lvbixcbiAgRXh0ZW5zaWJsZURldmljZVJlZ2lzdHJhdGlvblByb3ZpZGVyXG59IGZyb20gJy4vYmFzZS1kZXZpY2UtcmVnaXN0cmF0aW9uLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIEJhc2VFeHRlbnNpYmxlRGV2aWNlUmVnaXN0cmF0aW9uU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBhcHBsaWNhdGlvblNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RhdGVTZXJ2aWNlOiBBcHBTdGF0ZVNlcnZpY2VcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBnZXRNZXRhZGF0YVVybChjb250ZXh0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5nZXRTZXJ2aWNlQmFzZVVybChjb250ZXh0UGF0aCl9L21ldGFkYXRhYDtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRTZXJ2aWNlQmFzZVVybChjb250ZXh0UGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWNvbnRleHRQYXRoIHx8IGNvbnRleHRQYXRoLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBnZXR0ZXh0KCdUaGUgVVJMIG9mIHRoZSBtaWNyb3NlcnZpY2UgaXMgbWlzY29uZmlndXJlZC4gQSBjb250ZXh0IHBhdGggaXMgbWlzc2luZy4nKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGAvc2VydmljZS8ke2NvbnRleHRQYXRofS9kZXZpY2VSZWdpc3RyYXRpb25gO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGdldERldmljZVJlZ2lzdHJhdGlvblByb3ZpZGVycyhcbiAgICBidWxrOiBib29sZWFuXG4gICk6IFByb21pc2U8RXh0ZW5zaWJsZURldmljZVJlZ2lzdHJhdGlvblByb3ZpZGVyW10+IHtcbiAgICBsZXQgcHJvdmlkZXJzOiBFeHRlbnNpYmxlRGV2aWNlUmVnaXN0cmF0aW9uUHJvdmlkZXJbXSA9IFtdO1xuICAgIGNvbnN0IG1pY3Jvc2VydmljZXMgPSBhd2FpdCB0aGlzLmxpc3RNaWNyb3NlcnZpY2VzQnlVc2VyKCk7XG4gICAgaWYgKG1pY3Jvc2VydmljZXMgJiYgbWljcm9zZXJ2aWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICBwcm92aWRlcnMgPSB0aGlzLmdldFByb3ZpZGVyc0Zyb21NYW5pZmVzdEV4dGVuc2lvbnMobWljcm9zZXJ2aWNlcywgYnVsaykuY29uY2F0KFxuICAgICAgICB0aGlzLmdldFByb3ZpZGVyc0Zyb21FeHRlbnNpb25zKG1pY3Jvc2VydmljZXMsIGJ1bGspXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gcHJvdmlkZXJzO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBsaXN0TWljcm9zZXJ2aWNlc0J5VXNlcigpIHtcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuYXBwbGljYXRpb25TZXJ2aWNlLmxpc3RCeVVzZXIoXG4gICAgICB0aGlzLnN0YXRlU2VydmljZT8uY3VycmVudFVzZXI/LnZhbHVlPy51c2VyTmFtZSxcbiAgICAgIHtcbiAgICAgICAgZHJvcE92ZXJ3cml0dGVuQXBwczogdHJ1ZSxcbiAgICAgICAgbm9QYWdpbmc6IHRydWUsXG4gICAgICAgIHBhZ2VTaXplOiAxMDAsXG4gICAgICAgIHdpdGhUb3RhbFBhZ2VzOiB0cnVlXG4gICAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gZGF0YT8uZmlsdGVyKCh7IHR5cGUgfSkgPT4gdHlwZSA9PT0gQXBwbGljYXRpb25UeXBlLk1JQ1JPU0VSVklDRSk7XG4gIH1cblxuICBwcml2YXRlIGdldFByb3ZpZGVyc0Zyb21NYW5pZmVzdEV4dGVuc2lvbnMoXG4gICAgYXBwbGljYXRpb25zOiBJQXBwbGljYXRpb25bXSxcbiAgICBidWxrOiBib29sZWFuXG4gICk6IEV4dGVuc2libGVEZXZpY2VSZWdpc3RyYXRpb25Qcm92aWRlcltdIHtcbiAgICByZXR1cm4gZmxhdE1hcChhcHBsaWNhdGlvbnMsIGFwcGxpY2F0aW9uID0+IHtcbiAgICAgIHJldHVybiBhcHBsaWNhdGlvbj8ubWFuaWZlc3Q/LmV4dGVuc2lvbnM/Lm1hcChleHRlbnNpb24gPT4ge1xuICAgICAgICByZXR1cm4geyAuLi5leHRlbnNpb24sIGNvbnRleHRQYXRoOiBhcHBsaWNhdGlvbi5jb250ZXh0UGF0aCB9IGFzIEFwcGxpY2F0aW9uRXh0ZW5zaW9uO1xuICAgICAgfSk7XG4gICAgfSkuZmlsdGVyKHByb3ZpZGVyID0+IHRoaXMuYXBwU3VwcG9ydGluZ0V4dGVuc2libGVEZXZpY2VSZWdpc3RyYXRpb25Gb3JtKHByb3ZpZGVyLCBidWxrKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFByb3ZpZGVyc0Zyb21FeHRlbnNpb25zKFxuICAgIGFwcGxpY2F0aW9uczogSUFwcGxpY2F0aW9uW10sXG4gICAgYnVsazogYm9vbGVhblxuICApOiBFeHRlbnNpYmxlRGV2aWNlUmVnaXN0cmF0aW9uUHJvdmlkZXJbXSB7XG4gICAgcmV0dXJuIGZsYXRNYXAoYXBwbGljYXRpb25zLCBhcHBsaWNhdGlvbiA9PiB7XG4gICAgICByZXR1cm4gYXBwbGljYXRpb24uZXh0ZW5zaW9ucz8ubWFwKGV4dGVuc2lvbiA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZXh0ZW5zaW9uLFxuICAgICAgICAgIGNvbnRleHRQYXRoOiBhcHBsaWNhdGlvbi5jb250ZXh0UGF0aFxuICAgICAgICB9IGFzIEV4dGVuc2libGVEZXZpY2VSZWdpc3RyYXRpb25Qcm92aWRlcjtcbiAgICAgIH0pO1xuICAgIH0pLmZpbHRlcihwcm92aWRlciA9PiB0aGlzLmFwcFN1cHBvcnRpbmdFeHRlbnNpYmxlRGV2aWNlUmVnaXN0cmF0aW9uRm9ybShwcm92aWRlciwgYnVsaykpO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBTdXBwb3J0aW5nRXh0ZW5zaWJsZURldmljZVJlZ2lzdHJhdGlvbkZvcm0oXG4gICAgZXh0ZW5zaW9uOiBFeHRlbnNpYmxlRGV2aWNlUmVnaXN0cmF0aW9uUHJvdmlkZXIsXG4gICAgYnVsazogYm9vbGVhblxuICApOiBib29sZWFuIHtcbiAgICBpZiAoYnVsaykge1xuICAgICAgcmV0dXJuIGV4dGVuc2lvbj8udHlwZSA9PT0gJ2V4dGVuc2libGVCdWxrRGV2aWNlUmVnaXN0cmF0aW9uJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGV4dGVuc2lvbj8udHlwZSA9PT0gJ2V4dGVuc2libGVEZXZpY2VSZWdpc3RyYXRpb24nO1xuICAgIH1cbiAgfVxufVxuIl19