UNPKG

@3kles/kles-ionapi

Version:
1 lines 10.4 kB
{"version":3,"file":"3kles-kles-ionapi.mjs","sources":["../../../projects/kles-ionapi/src/lib/services/kles-ionapi.service.ts","../../../projects/kles-ionapi/src/lib/interceptors/kles-ionapi-token.interceptor.ts","../../../projects/kles-ionapi/src/lib/kles-ionapi.module.ts","../../../projects/kles-ionapi/src/public-api.ts","../../../projects/kles-ionapi/src/3kles-kles-ionapi.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { IKlesIonApi } from './kles-ionapi.interface';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { filter, tap } from 'rxjs/operators';\nimport { HttpClient, HttpContext, HttpContextToken } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class KlesIonApiService implements IKlesIonApi {\n\n private _token$ = new BehaviorSubject<string>(null);\n\n constructor(private http: HttpClient) {\n\n }\n\n public auth(): Observable<any> {\n return this.refreshToken();\n }\n\n public refreshToken(force?: boolean): Observable<string> {\n this.setToken(null);\n if (this.isLocalhost()) {\n console.warn('In localhost, you cannot retrieve a ion api token');\n return of(null);\n } else {\n const url = `/grid/rest/security/sessions/oauth`;\n return this.http.get(url, {\n params: {\n ...(force && { forceRefresh: true }),\n rid: this.generateRandomString()\n },\n responseType: 'text'\n }).pipe(\n tap((token) => this.setToken(token))\n );\n }\n }\n\n public get token(): string {\n return this._token$.getValue();\n }\n\n public setDevelopmentToken(token: string) {\n if (!this.isLocalhost()) {\n throw new Error('Development tokens are only allowed for localhost');\n } else {\n this.setToken(token);\n }\n }\n\n public getContext(): Observable<string> {\n return this._token$.asObservable().pipe(filter((token) => !!token));\n }\n\n private setToken(token: string) {\n this._token$.next(token);\n }\n\n private generateRandomString(stringLength: number = 16): string {\n const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n let randomstring = '';\n for (let i = 0; i < stringLength; i++) {\n const rnum = Math.floor(Math.random() * chars.length);\n randomstring += chars.substring(rnum, rnum + 1);\n }\n return randomstring;\n }\n\n private isLocalhost(): boolean {\n return window.location.hostname === 'localhost';\n }\n\n}\n\n","import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpContextToken, HttpErrorResponse } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable, throwError } from \"rxjs\";\nimport { KlesIonApiService } from \"../services/kles-ionapi.service\";\nimport { catchError, switchMap } from \"rxjs/operators\";\n\n@Injectable()\nexport class KlesIonApiTokenInterceptor implements HttpInterceptor {\n\n constructor(private klesIonApiService: KlesIonApiService) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n if (!this.klesIonApiService.token) {\n return next.handle(request);\n }\n const authReq = this.addToken(request, this.klesIonApiService.token);\n return next.handle(authReq).pipe(\n catchError((err) => {\n if (err instanceof HttpErrorResponse && err.status === 401) {\n return this.handle401Error(authReq, next) || throwError(err);\n } else {\n return throwError(err);\n }\n })\n );\n }\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n if (this.klesIonApiService.token) {\n return this.klesIonApiService.refreshToken(true).pipe(\n switchMap((token) => {\n return next.handle(this.addToken(request, token));\n }),\n catchError((err) => {\n return throwError(err);\n })\n );\n }\n }\n\n private addToken(request: HttpRequest<any>, token: string) {\n return request.clone({\n headers: request.headers.set('Authorization', `Bearer ${token}`)\n });\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { KlesIonApiService } from './services/kles-ionapi.service';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\nimport { KlesIonApiTokenInterceptor } from './interceptors/kles-ionapi-token.interceptor';\n\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n exports: [],\n providers: [\n KlesIonApiService,\n ]\n})\nexport class KlesIonApiModule {\n\n static forRoot(configuration: { ionApiTokenInterceptor: boolean } = { ionApiTokenInterceptor: true }): ModuleWithProviders<KlesIonApiModule> {\n return {\n ngModule: KlesIonApiModule,\n providers: [\n ...(configuration.ionApiTokenInterceptor ? [{ provide: HTTP_INTERCEPTORS, useClass: KlesIonApiTokenInterceptor, multi: true }] : [])\n ]\n };\n }\n}\n\n\n","/*\n * Public API Surface of kles-ionapi\n */\n\nexport * from './lib/services/kles-ionapi.interface';\nexport * from './lib/services/kles-ionapi.service';\nexport * from './lib/interceptors/kles-ionapi-token.interceptor';\n\nexport * from './lib/kles-ionapi.module';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.KlesIonApiService"],"mappings":";;;;;;;;MASa,iBAAiB,CAAA;AAI1B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;AAFhB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAS,IAAI,CAAC;IAInD;IAEO,IAAI,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;IAC9B;AAEO,IAAA,YAAY,CAAC,KAAe,EAAA;AAC/B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC;AACjE,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;AAClB,QAAA;AAAM,aAAA;YACH,MAAM,GAAG,GAAG,CAAA,kCAAA,CAAoC;AAChD,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;AACtB,gBAAA,MAAM,EAAE;oBACJ,IAAI,KAAK,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACpC,oBAAA,GAAG,EAAE,IAAI,CAAC,oBAAoB;AACjC,iBAAA;AACD,gBAAA,YAAY,EAAE;AACjB,aAAA,CAAC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACvC;AACJ,QAAA;IACL;AAEA,IAAA,IAAW,KAAK,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAClC;AAEO,IAAA,mBAAmB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC;AACvE,QAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AACvB,QAAA;IACL;IAEO,UAAU,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACvE;AAEQ,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;IAEQ,oBAAoB,CAAC,eAAuB,EAAE,EAAA;QAClD,MAAM,KAAK,GAAG,sCAAsC;QACpD,IAAI,YAAY,GAAG,EAAE;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;AACnC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;YACrD,YAAY,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC;AAClD,QAAA;AACD,QAAA,OAAO,YAAY;IACvB;IAEQ,WAAW,GAAA;AACf,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW;IACnD;+GA/DS,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAET,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCDY,0BAA0B,CAAA;AAEnC,IAAA,WAAA,CAAoB,iBAAoC,EAAA;QAApC,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;IAAuB;IAE5D,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA;AACD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;AACpE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC5B,UAAU,CAAC,CAAC,GAAG,KAAI;YACf,IAAI,GAAG,YAAY,iBAAiB,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;AACxD,gBAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC;AAC/D,YAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,UAAU,CAAC,GAAG,CAAC;AACzB,YAAA;QACL,CAAC,CAAC,CACL;IACL;IAEQ,cAAc,CAAC,OAAyB,EAAE,IAAiB,EAAA;AAC/D,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC9B,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CACjD,SAAS,CAAC,CAAC,KAAK,KAAI;AAChB,gBAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACrD,YAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,GAAG,KAAI;AACf,gBAAA,OAAO,UAAU,CAAC,GAAG,CAAC;YAC1B,CAAC,CAAC,CACL;AACJ,QAAA;IACL;IAEQ,QAAQ,CAAC,OAAyB,EAAE,KAAa,EAAA;QACrD,OAAO,OAAO,CAAC,KAAK,CAAC;AACjB,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE;AAClE,SAAA,CAAC;IACN;+GArCS,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA1B,0BAA0B,EAAA,CAAA,CAAA;;4FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC;;;MCWY,gBAAgB,CAAA;IAEzB,OAAO,OAAO,CAAC,aAAA,GAAqD,EAAE,sBAAsB,EAAE,IAAI,EAAE,EAAA;QAChG,OAAO;AACH,YAAA,QAAQ,EAAE,gBAAgB;AAC1B,YAAA,SAAS,EAAE;gBACP,IAAI,aAAa,CAAC,sBAAsB,GAAG,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE;AACtI;SACJ;IACL;+GATS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAPrB,YAAY,CAAA,EAAA,CAAA,CAAA;AAOP,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,SAAA,EAJd;YACP,iBAAiB;AACpB,SAAA,EAAA,OAAA,EAAA,CALG,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAOP,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACL;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;wBACP,iBAAiB;AACpB;AACJ,iBAAA;;;AChBD;;AAEG;;ACFH;;AAEG;;;;"}