@universis/common
Version:
Universis - common directives and services
107 lines • 11.1 kB
JavaScript
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