@alauda-fe/common
Version:
Alauda frontend team common codes.
53 lines • 7.09 kB
JavaScript
/**
* @packageDocumentation
* @module license
*/
import { HttpClient } from '@angular/common/http';
import { Inject, Injectable, InjectionToken } from '@angular/core';
import { catchError, map, of, shareReplay } from 'rxjs';
import { K8sUtilService } from '../core/public-api';
import { formatProductName, LICENSE_FEATURE_GATE } from './license-api';
import { LicenseProductName, LicenseStatus } from './license.type';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
import * as i2 from "../core/public-api";
import * as i3 from "./license.type";
// each platform inject this token to specify product name
export const LICENSE_PRODUCT_NAME_TOKEN = new InjectionToken('product_name');
const FAILED_STATUS_MAPPER = {
Expired: LicenseStatus.EXPIRED,
Forbidden: LicenseStatus.NO_PERMISSION,
NotExist: LicenseStatus.UNAUTHORIZED,
};
export class LicenseService {
constructor(productName, http, k8sUtil) {
this.productName = productName;
this.http = http;
this.k8sUtil = k8sUtil;
this.status$ = this.getStatus();
}
getStatus() {
return this.http
.get(LICENSE_FEATURE_GATE, {
params: { product: formatProductName(this.productName) },
})
.pipe(catchError(() => of(null)), map(featureGate => {
if (featureGate?.status?.enabled) {
return LicenseStatus.AUTHORIZED;
}
const annotation = this.k8sUtil.getAnnotation(featureGate, 'reason', 'license');
return ((annotation && FAILED_STATUS_MAPPER[annotation]) ||
LicenseStatus.INVALID);
}), shareReplay(1));
}
static { this.ɵfac = function LicenseService_Factory(t) { return new (t || LicenseService)(i0.ɵɵinject(LICENSE_PRODUCT_NAME_TOKEN), i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.K8sUtilService)); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LicenseService, factory: LicenseService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LicenseService, [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], () => [{ type: i3.LicenseProductName, decorators: [{
type: Inject,
args: [LICENSE_PRODUCT_NAME_TOKEN]
}] }, { type: i1.HttpClient }, { type: i2.K8sUtilService }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2xpY2Vuc2UvbGljZW5zZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFjLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRSxPQUFPLEVBQWUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFFbkUsMERBQTBEO0FBQzFELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUNyQyxJQUFJLGNBQWMsQ0FBcUIsY0FBYyxDQUFDLENBQUM7QUFFekQsTUFBTSxvQkFBb0IsR0FBa0M7SUFDMUQsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPO0lBQzlCLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYTtJQUN0QyxRQUFRLEVBQUUsYUFBYSxDQUFDLFlBQVk7Q0FDckMsQ0FBQztBQUdGLE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBRW1CLFdBQStCLEVBQy9CLElBQWdCLEVBQ2hCLE9BQXVCO1FBRnZCLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQWdCO1FBTjFDLFlBQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFPeEIsQ0FBQztJQUVKLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsR0FBRyxDQUFjLG9CQUFvQixFQUFFO1lBQ3RDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7U0FDekQsQ0FBQzthQUNELElBQUksQ0FDSCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzFCLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQixJQUFJLFdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ2pDLE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQztZQUNsQyxDQUFDO1lBQ0QsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQzNDLFdBQVcsRUFDWCxRQUFRLEVBQ1IsU0FBUyxDQUNWLENBQUM7WUFDRixPQUFPLENBQ0wsQ0FBQyxVQUFVLElBQUksb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2hELGFBQWEsQ0FBQyxPQUFPLENBQ3RCLENBQUM7UUFDSixDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQ2YsQ0FBQztJQUNOLENBQUM7K0VBakNVLGNBQWMsY0FJZiwwQkFBMEI7dUVBSnpCLGNBQWMsV0FBZCxjQUFjLG1CQURELE1BQU07O2lGQUNuQixjQUFjO2NBRDFCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7O3NCQUs3QixNQUFNO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2VEb2N1bWVudGF0aW9uXG4gKiBAbW9kdWxlIGxpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgbWFwLCBvZiwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRmVhdHVyZUdhdGUsIEs4c1V0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgZm9ybWF0UHJvZHVjdE5hbWUsIExJQ0VOU0VfRkVBVFVSRV9HQVRFIH0gZnJvbSAnLi9saWNlbnNlLWFwaSc7XG5pbXBvcnQgeyBMaWNlbnNlUHJvZHVjdE5hbWUsIExpY2Vuc2VTdGF0dXMgfSBmcm9tICcuL2xpY2Vuc2UudHlwZSc7XG5cbi8vIGVhY2ggcGxhdGZvcm0gaW5qZWN0IHRoaXMgdG9rZW4gdG8gc3BlY2lmeSBwcm9kdWN0IG5hbWVcbmV4cG9ydCBjb25zdCBMSUNFTlNFX1BST0RVQ1RfTkFNRV9UT0tFTiA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxMaWNlbnNlUHJvZHVjdE5hbWU+KCdwcm9kdWN0X25hbWUnKTtcblxuY29uc3QgRkFJTEVEX1NUQVRVU19NQVBQRVI6IFJlY29yZDxzdHJpbmcsIExpY2Vuc2VTdGF0dXM+ID0ge1xuICBFeHBpcmVkOiBMaWNlbnNlU3RhdHVzLkVYUElSRUQsXG4gIEZvcmJpZGRlbjogTGljZW5zZVN0YXR1cy5OT19QRVJNSVNTSU9OLFxuICBOb3RFeGlzdDogTGljZW5zZVN0YXR1cy5VTkFVVEhPUklaRUQsXG59O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExpY2Vuc2VTZXJ2aWNlIHtcbiAgc3RhdHVzJCA9IHRoaXMuZ2V0U3RhdHVzKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMSUNFTlNFX1BST0RVQ1RfTkFNRV9UT0tFTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3ROYW1lOiBMaWNlbnNlUHJvZHVjdE5hbWUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzVXRpbDogSzhzVXRpbFNlcnZpY2UsXG4gICkge31cblxuICBnZXRTdGF0dXMoKTogT2JzZXJ2YWJsZTxMaWNlbnNlU3RhdHVzPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDxGZWF0dXJlR2F0ZT4oTElDRU5TRV9GRUFUVVJFX0dBVEUsIHtcbiAgICAgICAgcGFyYW1zOiB7IHByb2R1Y3Q6IGZvcm1hdFByb2R1Y3ROYW1lKHRoaXMucHJvZHVjdE5hbWUpIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpLFxuICAgICAgICBtYXAoZmVhdHVyZUdhdGUgPT4ge1xuICAgICAgICAgIGlmIChmZWF0dXJlR2F0ZT8uc3RhdHVzPy5lbmFibGVkKSB7XG4gICAgICAgICAgICByZXR1cm4gTGljZW5zZVN0YXR1cy5BVVRIT1JJWkVEO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBhbm5vdGF0aW9uID0gdGhpcy5rOHNVdGlsLmdldEFubm90YXRpb24oXG4gICAgICAgICAgICBmZWF0dXJlR2F0ZSxcbiAgICAgICAgICAgICdyZWFzb24nLFxuICAgICAgICAgICAgJ2xpY2Vuc2UnLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChhbm5vdGF0aW9uICYmIEZBSUxFRF9TVEFUVVNfTUFQUEVSW2Fubm90YXRpb25dKSB8fFxuICAgICAgICAgICAgTGljZW5zZVN0YXR1cy5JTlZBTElEXG4gICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICAgKTtcbiAgfVxufVxuIl19