UNPKG

@universis/common

Version:

Universis - common directives and services

107 lines 11.1 kB
import { Injectable } from '@angular/core'; import { AngularDataContext } from '@themost/angular'; import * as i0 from "@angular/core"; import * as i1 from "@themost/angular"; /** * * This Service is used to get or set user storage items * @export * @class ConfigurationService */ export class UserStorageService { constructor(context) { this.context = context; // } /** * Validates if server supports user storage */ async hasUserStorage() { // if flag has not been set yet if (this._hasUserStorage == null) { // ping server for user storage const services = await this.context.getService().execute({ method: 'GET', url: 'diagnostics/services', headers: {}, data: null }); // if return value is an array of services if (Array.isArray(services)) { // search for user storage service this._hasUserStorage = services.find(service => { return service.serviceType === 'UserStorageService'; }) != null; return this._hasUserStorage; } // otherwise set flag to false this._hasUserStorage = false; } // and finally return flag return this._hasUserStorage; } /** * Gets a user storage item based on the given key * @param key */ async getItem(key) { const hasUserStorage = await this.hasUserStorage(); if (!hasUserStorage) { throw new Error('API server configuration does not support user storage service.'); } return await this.context.getService().execute({ method: 'POST', url: 'users/me/storage/get', headers: {}, data: { key: key } }); } // noinspection JSUnusedGlobalSymbols /** * Sets a user storage item * @param key * @param value */ async setItem(key, value) { const hasUserStorage = await this.hasUserStorage(); if (!hasUserStorage) { throw new Error('API server configuration does not support user storage service.'); } return await this.context.getService().execute({ method: 'POST', url: 'users/me/storage/set', headers: {}, data: { key: key, value: value } }); } /** * Removes a user storage item * @param key */ async removeItem(key) { const hasUserStorage = await this.hasUserStorage(); if (!hasUserStorage) { throw new Error('API server configuration does not support user storage service.'); } return await this.context.getService().execute({ method: 'POST', url: 'users/me/storage/set', headers: {}, data: { key: key, value: null } }); } } UserStorageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserStorageService, deps: [{ token: i1.AngularDataContext }], target: i0.ɵɵFactoryTarget.Injectable }); UserStorageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserStorageService }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: UserStorageService, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.AngularDataContext }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1zdG9yYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NoYXJlZC9zZXJ2aWNlcy91c2VyLXN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBRXBEOzs7OztHQUtHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQUkzQixZQUFvQixPQUEyQjtRQUEzQixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQyxFQUFFO0lBQ04sQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGNBQWM7UUFDaEIsK0JBQStCO1FBQy9CLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUU7WUFDOUIsK0JBQStCO1lBQy9CLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JELE1BQU0sRUFBRSxLQUFLO2dCQUNiLEdBQUcsRUFBRSxzQkFBc0I7Z0JBQzNCLE9BQU8sRUFBRSxFQUFHO2dCQUNaLElBQUksRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFDO1lBQ0gsMENBQTBDO1lBQzFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDekIsa0NBQWtDO2dCQUNsQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUUsT0FBTyxDQUFDLEVBQUU7b0JBQzVDLE9BQU8sT0FBTyxDQUFDLFdBQVcsS0FBSyxvQkFBb0IsQ0FBQztnQkFDeEQsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO2dCQUNYLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQzthQUMvQjtZQUNELDhCQUE4QjtZQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztTQUNoQztRQUNELDBCQUEwQjtRQUMxQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVztRQUNyQixNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztTQUN0RjtRQUNGLE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLE9BQU8sQ0FBQztZQUMzQyxNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxzQkFBc0I7WUFDM0IsT0FBTyxFQUFFLEVBQUc7WUFDWixJQUFJLEVBQUU7Z0JBQ0YsR0FBRyxFQUFFLEdBQUc7YUFDWDtTQUNKLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxxQ0FBcUM7SUFDckM7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQVU7UUFFakMsTUFBTSxjQUFjLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7U0FDdEY7UUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUM7WUFDM0MsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsc0JBQXNCO1lBQzNCLE9BQU8sRUFBRSxFQUFHO1lBQ1osSUFBSSxFQUFFO2dCQUNGLEdBQUcsRUFBRSxHQUFHO2dCQUNSLEtBQUssRUFBRSxLQUFLO2FBQ2Y7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFXO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ25ELElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpRUFBaUUsQ0FBQyxDQUFDO1NBQ3RGO1FBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDO1lBQzNDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLHNCQUFzQjtZQUMzQixPQUFPLEVBQUUsRUFBRztZQUNaLElBQUksRUFBRTtnQkFDRixHQUFHLEVBQUUsR0FBRztnQkFDUixLQUFLLEVBQUUsSUFBSTthQUNkO1NBQ0osQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7Z0hBaEdRLGtCQUFrQjtvSEFBbEIsa0JBQWtCOzRGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge0FuZ3VsYXJEYXRhQ29udGV4dH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5cbi8qKlxuICpcbiAqIFRoaXMgU2VydmljZSBpcyB1c2VkIHRvIGdldCBvciBzZXQgdXNlciBzdG9yYWdlIGl0ZW1zXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgQ29uZmlndXJhdGlvblNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVzZXJTdG9yYWdlU2VydmljZSB7XG5cbiAgICBwcml2YXRlIF9oYXNVc2VyU3RvcmFnZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udGV4dDogQW5ndWxhckRhdGFDb250ZXh0KSB7XG4gICAgICAgIC8vXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVmFsaWRhdGVzIGlmIHNlcnZlciBzdXBwb3J0cyB1c2VyIHN0b3JhZ2VcbiAgICAgKi9cbiAgICBhc3luYyBoYXNVc2VyU3RvcmFnZSgpIHtcbiAgICAgICAgLy8gaWYgZmxhZyBoYXMgbm90IGJlZW4gc2V0IHlldFxuICAgICAgICBpZiAodGhpcy5faGFzVXNlclN0b3JhZ2UgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gcGluZyBzZXJ2ZXIgZm9yIHVzZXIgc3RvcmFnZVxuICAgICAgICAgICAgY29uc3Qgc2VydmljZXMgPSBhd2FpdCB0aGlzLmNvbnRleHQuZ2V0U2VydmljZSgpLmV4ZWN1dGUoe1xuICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgICAgICAgICAgdXJsOiAnZGlhZ25vc3RpY3Mvc2VydmljZXMnLFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHsgfSxcbiAgICAgICAgICAgICAgICBkYXRhOiBudWxsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIGlmIHJldHVybiB2YWx1ZSBpcyBhbiBhcnJheSBvZiBzZXJ2aWNlc1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2VydmljZXMpKSB7XG4gICAgICAgICAgICAgICAgLy8gc2VhcmNoIGZvciB1c2VyIHN0b3JhZ2Ugc2VydmljZVxuICAgICAgICAgICAgICAgIHRoaXMuX2hhc1VzZXJTdG9yYWdlID0gc2VydmljZXMuZmluZCggc2VydmljZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXJ2aWNlLnNlcnZpY2VUeXBlID09PSAnVXNlclN0b3JhZ2VTZXJ2aWNlJztcbiAgICAgICAgICAgICAgICB9KSAhPSBudWxsO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9oYXNVc2VyU3RvcmFnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG90aGVyd2lzZSBzZXQgZmxhZyB0byBmYWxzZVxuICAgICAgICAgICAgdGhpcy5faGFzVXNlclN0b3JhZ2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhbmQgZmluYWxseSByZXR1cm4gZmxhZ1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzVXNlclN0b3JhZ2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIHVzZXIgc3RvcmFnZSBpdGVtIGJhc2VkIG9uIHRoZSBnaXZlbiBrZXlcbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICovXG4gICAgYXN5bmMgZ2V0SXRlbShrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IGhhc1VzZXJTdG9yYWdlID0gYXdhaXQgdGhpcy5oYXNVc2VyU3RvcmFnZSgpO1xuICAgICAgICBpZiAoIWhhc1VzZXJTdG9yYWdlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FQSSBzZXJ2ZXIgY29uZmlndXJhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHVzZXIgc3RvcmFnZSBzZXJ2aWNlLicpO1xuICAgICAgICB9XG4gICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29udGV4dC5nZXRTZXJ2aWNlKCkuZXhlY3V0ZSh7XG4gICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICB1cmw6ICd1c2Vycy9tZS9zdG9yYWdlL2dldCcsXG4gICAgICAgICAgIGhlYWRlcnM6IHsgfSxcbiAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAga2V5OiBrZXlcbiAgICAgICAgICAgfVxuICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIG5vaW5zcGVjdGlvbiBKU1VudXNlZEdsb2JhbFN5bWJvbHNcbiAgICAvKipcbiAgICAgKiBTZXRzIGEgdXNlciBzdG9yYWdlIGl0ZW1cbiAgICAgKiBAcGFyYW0ga2V5XG4gICAgICogQHBhcmFtIHZhbHVlXG4gICAgICovXG4gICAgYXN5bmMgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IFByb21pc2U8YW55PiB7XG5cbiAgICAgICAgY29uc3QgaGFzVXNlclN0b3JhZ2UgPSBhd2FpdCB0aGlzLmhhc1VzZXJTdG9yYWdlKCk7XG4gICAgICAgIGlmICghaGFzVXNlclN0b3JhZ2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVBJIHNlcnZlciBjb25maWd1cmF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdXNlciBzdG9yYWdlIHNlcnZpY2UuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuY29udGV4dC5nZXRTZXJ2aWNlKCkuZXhlY3V0ZSh7XG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICAgIHVybDogJ3VzZXJzL21lL3N0b3JhZ2Uvc2V0JyxcbiAgICAgICAgICAgIGhlYWRlcnM6IHsgfSxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBhIHVzZXIgc3RvcmFnZSBpdGVtXG4gICAgICogQHBhcmFtIGtleVxuICAgICAqL1xuICAgIGFzeW5jIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgICAgICBjb25zdCBoYXNVc2VyU3RvcmFnZSA9IGF3YWl0IHRoaXMuaGFzVXNlclN0b3JhZ2UoKTtcbiAgICAgICAgaWYgKCFoYXNVc2VyU3RvcmFnZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBUEkgc2VydmVyIGNvbmZpZ3VyYXRpb24gZG9lcyBub3Qgc3VwcG9ydCB1c2VyIHN0b3JhZ2Ugc2VydmljZS4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb250ZXh0LmdldFNlcnZpY2UoKS5leGVjdXRlKHtcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgdXJsOiAndXNlcnMvbWUvc3RvcmFnZS9zZXQnLFxuICAgICAgICAgICAgaGVhZGVyczogeyB9LFxuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGtleToga2V5LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxufVxuIl19