import { Locker } from 'angular-safeguard'; import { Injectable } from '@angular/core'; import { BaseRequestOptions, BrowserXhr, Request, RequestOptions, ResponseOptions, XHRBackend, XHRConnection, XSRFStrategy } from '@angular/http'; declare var window: any; // TODO: Chnage this to use Covalent Http helper service // https://www.npmjs.com/package/@covalent/http @Injectable() export class DefaultRequestOptions extends BaseRequestOptions { constructor(private store: Locker) { super(); // Set the default 'Content-Type' header this.headers.set('Content-Type', 'application/json'); } } @Injectable() export class ApiXHRBackend extends XHRBackend { localhostEnv : boolean = false; static DEV_TOMCAT_URL : String = 'http://localhost:8080/securis/'; constructor(_browserXHR: BrowserXhr, _baseResponseOptions: ResponseOptions, _xsrfStrategy: XSRFStrategy, private store: Locker) { super(_browserXHR, _baseResponseOptions, _xsrfStrategy); this.localhostEnv = window.location.href.startsWith("http://localhost"); } createConnection(request: Request): XHRConnection { let token = this.store.get('token'); if (token) { request.headers.set('X-SECURIS-TOKEN', token); } if (this.localhostEnv && !request.url.endsWith('.js') && !request.url.endsWith('.json') && !request.url.endsWith('.html') && !request.url.endsWith('.svg')){ request.url = ApiXHRBackend.DEV_TOMCAT_URL + request.url; // prefix base url } return super.createConnection(request); } } export const requestOptionsProvider = { provide: RequestOptions, useClass: DefaultRequestOptions }; export const requestBackendProvider = { provide: XHRBackend, useClass: ApiXHRBackend };