@3kles/kles-ionapi
Version:
69 lines • 8.45 kB
JavaScript
import { Injectable } from '@angular/core';
import { BehaviorSubject, of } from 'rxjs';
import { filter, tap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
export class KlesIonApiService {
constructor(http) {
this.http = http;
this._token$ = new BehaviorSubject(null);
}
auth() {
return this.refreshToken();
}
refreshToken(force) {
this.setToken(null);
if (this.isLocalhost()) {
console.warn('In localhost, you cannot retrieve a ion api token');
return of(null);
}
else {
const url = `/grid/rest/security/sessions/oauth`;
return this.http.get(url, {
params: {
...(force && { forceRefresh: true }),
rid: this.generateRandomString()
},
responseType: 'text'
}).pipe(tap((token) => this.setToken(token)));
}
}
get token() {
return this._token$.getValue();
}
setDevelopmentToken(token) {
if (!this.isLocalhost()) {
throw new Error('Development tokens are only allowed for localhost');
}
else {
this.setToken(token);
}
}
getContext() {
return this._token$.asObservable().pipe(filter((token) => !!token));
}
setToken(token) {
this._token$.next(token);
}
generateRandomString(stringLength = 16) {
const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let randomstring = '';
for (let i = 0; i < stringLength; i++) {
const rnum = Math.floor(Math.random() * chars.length);
randomstring += chars.substring(rnum, rnum + 1);
}
return randomstring;
}
isLocalhost() {
return window.location.hostname === 'localhost';
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KlesIonApiService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KlesIonApiService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KlesIonApiService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.HttpClient }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2xlcy1pb25hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tsZXMtaW9uYXBpL3NyYy9saWIvc2VydmljZXMva2xlcy1pb25hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQU03QyxNQUFNLE9BQU8saUJBQWlCO0lBSTFCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFGNUIsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFTLElBQUksQ0FBQyxDQUFDO0lBSXBELENBQUM7SUFFTSxJQUFJO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLFlBQVksQ0FBQyxLQUFlO1FBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7WUFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO1lBQ2xFLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25CO2FBQU07WUFDSCxNQUFNLEdBQUcsR0FBRyxvQ0FBb0MsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsTUFBTSxFQUFFO29CQUNKLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7b0JBQ3BDLEdBQUcsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7aUJBQ25DO2dCQUNELFlBQVksRUFBRSxNQUFNO2FBQ3ZCLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQ3ZDLENBQUM7U0FDTDtJQUNMLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLG1CQUFtQixDQUFDLEtBQWE7UUFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7U0FDeEU7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBRU0sVUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRU8sUUFBUSxDQUFDLEtBQWE7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLG9CQUFvQixDQUFDLGVBQXVCLEVBQUU7UUFDbEQsTUFBTSxLQUFLLEdBQUcsc0NBQXNDLENBQUM7UUFDckQsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RELFlBQVksSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0lBRU8sV0FBVztRQUNmLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssV0FBVyxDQUFDO0lBQ3BELENBQUM7K0dBL0RRLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmQsTUFBTTs7NEZBRVQsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElLbGVzSW9uQXBpIH0gZnJvbSAnLi9rbGVzLWlvbmFwaS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwQ29udGV4dCwgSHR0cENvbnRleHRUb2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBLbGVzSW9uQXBpU2VydmljZSBpbXBsZW1lbnRzIElLbGVzSW9uQXBpIHtcblxuICAgIHByaXZhdGUgX3Rva2VuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPihudWxsKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIGF1dGgoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmcmVzaFRva2VuKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlZnJlc2hUb2tlbihmb3JjZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICB0aGlzLnNldFRva2VuKG51bGwpO1xuICAgICAgICBpZiAodGhpcy5pc0xvY2FsaG9zdCgpKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ0luIGxvY2FsaG9zdCwgeW91IGNhbm5vdCByZXRyaWV2ZSBhIGlvbiBhcGkgdG9rZW4nKTtcbiAgICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGAvZ3JpZC9yZXN0L3NlY3VyaXR5L3Nlc3Npb25zL29hdXRoYDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwge1xuICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAuLi4oZm9yY2UgJiYgeyBmb3JjZVJlZnJlc2g6IHRydWUgfSksXG4gICAgICAgICAgICAgICAgICAgIHJpZDogdGhpcy5nZW5lcmF0ZVJhbmRvbVN0cmluZygpXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0J1xuICAgICAgICAgICAgfSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKHRva2VuKSA9PiB0aGlzLnNldFRva2VuKHRva2VuKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRva2VuKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl90b2tlbiQuZ2V0VmFsdWUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RGV2ZWxvcG1lbnRUb2tlbih0b2tlbjogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0xvY2FsaG9zdCgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RldmVsb3BtZW50IHRva2VucyBhcmUgb25seSBhbGxvd2VkIGZvciBsb2NhbGhvc3QnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VG9rZW4odG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbnRleHQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuJC5hc09ic2VydmFibGUoKS5waXBlKGZpbHRlcigodG9rZW4pID0+ICEhdG9rZW4pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRva2VuKHRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fdG9rZW4kLm5leHQodG9rZW4pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVSYW5kb21TdHJpbmcoc3RyaW5nTGVuZ3RoOiBudW1iZXIgPSAxNik6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGNoYXJzID0gJzAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic7XG4gICAgICAgIGxldCByYW5kb21zdHJpbmcgPSAnJztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHJpbmdMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgcm51bSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCk7XG4gICAgICAgICAgICByYW5kb21zdHJpbmcgKz0gY2hhcnMuc3Vic3RyaW5nKHJudW0sIHJudW0gKyAxKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmFuZG9tc3RyaW5nO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNMb2NhbGhvc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUgPT09ICdsb2NhbGhvc3QnO1xuICAgIH1cblxufVxuXG4iXX0=