Skip to content

Instantly share code, notes, and snippets.

@ThomasBurleson
Last active August 2, 2016 19:40
Show Gist options
  • Save ThomasBurleson/5679256ea74e17cd4a6ff014478078a5 to your computer and use it in GitHub Desktop.
Save ThomasBurleson/5679256ea74e17cd4a6ff014478078a5 to your computer and use it in GitHub Desktop.
import {Injectable} from 'angular2/core';
import {Http, Headers} from 'angular2/http';
import {SessionModel} from './global/session';
@Injectable()
export class AuthenticatedHttpClient {
constructor(private http: Http, private session:SessionModel) { }
createAuthorizationHeader() {
return {
'x-auth-token' : this.session.sessionToken || localStorage.getItem('sessionToken')
};
}
get(url) {
return this.http.get(url, {
headers: this.createAuthorizationHeader()
});
}
post(url, data) {
return this.http.post(url, data, {
headers: this.createAuthorizationHeader()
});
}
}
@ThomasBurleson
Copy link
Author

ThomasBurleson commented Aug 2, 2016

// See Angular 2 Decorator: @LocalStorage (https://github.com/marcj/angular2-localstorage)

import {Injectable} from 'angular2/core';
import {Http} from 'angular2/http';
import {format, FormatValues} from '../utils/supplant';  // @see  http://bit.ly/2atH5Kq

import {LocalStorage} from "angular2-localstorage/WebStorage";
import {SessionModel} from './global/session';

@Injectable()
export class AuthenticatedHttpClient {
  @LocalStorage('sessionToken') private cachedToken : string = '';

  constructor( private session:SessionModel, private http: Http ) {   }

  get authHeader() {
    if ( !this.cachedToken ) this.cachedToken = this.session.sessionToken;

    return {
      'x-auth-token' : this.session.sessionToken || this.cachedToken;
    };
  }

  /**
   * http.get( ... )
   */
  get(url:string, values?:FormatValues) {
    // @Todo - should route to login if the xAuthToken is not valid!
    return this.http.get(values ? format(url, values) : url, { headers: this.authHeader });
  }

  /**
   * http.post( ... )
   */
  post(url, data) {
    return this.http.post(url, data, {
      headers: this.authHeader
    });
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment