UNPKG

ns2-front-module-common

Version:
106 lines 4.2 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); import { Http as NgHttp, Request, ConnectionBackend, RequestOptions, Headers, BrowserXhr } from "@angular/http"; import { Observable } from "rxjs/Observable"; import { CurrentUserService } from "./current-user.service"; import { Injectable, Injector, ReflectiveInjector } from "@angular/core"; import { HttpErrorService } from "./http-error.service"; import { HttpClient, HttpHandler, HttpXhrBackend, XhrFactory } from "@angular/common/http"; export function httpFactory(injector, backend, defaultOptions) { return new HttpService(injector, backend, defaultOptions); } var HttpService = (function (_super) { __extends(HttpService, _super); function HttpService(injector, backend, defaultOptions) { var _this = _super.call(this, backend, defaultOptions) || this; _this.injector = injector; return _this; } /** * Возвращает стандартный HTTP-клиент * @returns {HttpClient} */ HttpService.prototype.getDefaultHttpClient = function () { if (!this.defaultHttpClient) { var injector = ReflectiveInjector.resolveAndCreate([ HttpClient, { provide: HttpHandler, useClass: HttpXhrBackend }, { provide: XhrFactory, useClass: BrowserXhr } ]); this.defaultHttpClient = injector.get(HttpClient); } return this.defaultHttpClient; }; /** * Переопределяем стандартный метод request(). Добавляем заголовок с токеном * * @param url * @param options * @returns {Observable<Response>} */ HttpService.prototype.request = function (url, options) { var _this = this; var userService = this.injector.get(CurrentUserService), token = userService.getToken(); if (typeof url === 'string') { var headers = new Headers(); headers.append(CurrentUserService.USER_TOKEN_NAME, token); if (!(options instanceof RequestOptions)) { options = new RequestOptions(); } options.headers = headers; } else if (url instanceof Request) { if (typeof url.headers === 'undefined') { url.headers = new Headers(); } url.headers.append(CurrentUserService.USER_TOKEN_NAME, token); } return Observable.fromPromise(new Promise(function (resolve, reject) { _super.prototype.request.call(_this, url, options) .subscribe(function (response) { return resolve(response); }, function (err) { reject(_this.handleHttpError(err)); }); })); }; HttpService.prototype.handleHttpError = function (err) { var message; var errNo; try { var json = err.json(); message = json.hasOwnProperty('error') ? json.error : err.statusText; errNo = json.hasOwnProperty('errno') ? json.errno : 0; } catch (error) { message = err.statusText; errNo = 0; } var error = { message: message, statusCode: err.status, errNo: errNo, errorResponse: err }; this.injector.get(HttpErrorService).handler.emit(error); return error; }; return HttpService; }(NgHttp)); export { HttpService }; HttpService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ HttpService.ctorParameters = function () { return [ { type: Injector, }, { type: ConnectionBackend, }, { type: RequestOptions, }, ]; }; //# sourceMappingURL=http.service.js.map