UNPKG

@nestjs/common

Version:

Nest - modern, fast, powerful node.js web framework (@common)

66 lines (65 loc) 2.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const axios_1 = require("axios"); const rxjs_1 = require("rxjs"); const decorators_1 = require("../decorators"); const http_constants_1 = require("./http.constants"); let HttpService = class HttpService { constructor(instance = axios_1.default) { this.instance = instance; } request(config) { return this.makeObservable(this.instance.request, config); } get(url, config) { return this.makeObservable(this.instance.get, url, config); } delete(url, config) { return this.makeObservable(this.instance.delete, url, config); } head(url, config) { return this.makeObservable(this.instance.head, url, config); } post(url, data, config) { return this.makeObservable(this.instance.post, url, data, config); } put(url, data, config) { return this.makeObservable(this.instance.put, url, data, config); } patch(url, data, config) { return this.makeObservable(this.instance.patch, url, data, config); } get axiosRef() { return this.instance; } makeObservable(axios, ...args) { return new rxjs_1.Observable(subscriber => { let config = args[args.length - 1]; if (!config) { config = {}; args[args.length - 1] = config; } const cancelSource = axios_1.default.CancelToken.source(); config.cancelToken = cancelSource.token; axios(...args) .then(res => { subscriber.next(res); subscriber.complete(); }) .catch(err => { subscriber.error(err); }); return () => { if (config.responseType !== 'stream') { cancelSource.cancel(); } }; }); } }; HttpService = tslib_1.__decorate([ tslib_1.__param(0, decorators_1.Inject(http_constants_1.AXIOS_INSTANCE_TOKEN)), tslib_1.__metadata("design:paramtypes", [Function]) ], HttpService); exports.HttpService = HttpService;