rxjs - Angular 2 - Inject authorization token before each Http request -


i need check token not expired before send every http request. i'm trying make injection using http interceptor this:

class httpinterceptor extends http {    constructor(backend: connectionbackend, defaultoptions: requestoptions, private _router: router) {     super(backend, defaultoptions);   }    get(url: string, options?: requestoptionsargs): observable<response> {     const keycloak$: observable = keycloakservice.updatetoken();      return keycloak$.map((options) => {       return super.get(url, this.getrequestoptionargs(options));     });     // -> observable<observable<response>>   }    getrequestoptionargs(options?: requestoptionsargs) : requestoptionsargs {     if (options == null) {         options = new requestoptions();     }     if (options.headers == null) {         options.headers = new headers();     }     options.headers.append('content-type', 'application/json');      return options;   } } 

how can implement observable dependency. keycloakservice.updatetoken() returns observable, need wait response , add authorization header. grateful tips.

use switchmap wait observable returned super.get() resolve before emitting response

replace

return keycloak$.map((options) => {   return super.get(url, this.getrequestoptionargs(options)); }); 

with

return keycloak$.switchmap(     options => super.get(url, this.getrequestoptionargs(options)) ); 

examples

i change:

if (options == null) {     options = new requestoptions(); } if (options.headers == null) {     options.headers = new headers(); } 

with:

if(!options) options = new requestoptions(); if(!options.headers) options.headers = new headers(); 

in order catch undefined null options


Comments

Popular posts from this blog

java - Jasper subreport showing only one entry from the JSON data source when embedded in the Title band -

mapreduce - Resource manager does not transit to active state from standby -

serialization - Convert Any type in scala to Array[Byte] and back -