@cardboard-box/ngx-box
Version:
A collection of useful directives, components and services for angular
66 lines • 10.8 kB
JavaScript
import { Injectable } from "@angular/core";
import { tap } from "rxjs";
import { saveAs } from "file-saver";
import { RxjsHttpResp } from './helpers/rxjs-http-resp.helper';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
import * as i2 from "./config.service";
export class HttpService {
constructor(http, config) {
this.http = http;
this.config = config;
}
fallback(url, group = 'fallback', referer) {
var path = encodeURIComponent(url);
let uri = `${this.config.corsFallback}/proxy?path=${path}&group=${group}`;
if (referer)
uri += `&referer=${encodeURIComponent(referer)}`;
return uri;
}
formatUrl(url) {
if (url.indexOf('https://') !== -1 ||
url.indexOf('http://') !== -1)
return url;
if (url.startsWith('/'))
url = url.substring(1);
return `${this.config.apiUrl}/${url}`;
}
get(url, options) {
let req = this.http.get(this.formatUrl(url), options);
return new RxjsHttpResp(req, url, this.config.isProd);
}
post(url, body, options) {
let req = this.http.post(this.formatUrl(url), body, options);
return new RxjsHttpResp(req, url, this.config.isProd);
}
put(url, body, options) {
let req = this.http.put(this.formatUrl(url), body, options);
return new RxjsHttpResp(req, url, this.config.isProd);
}
delete(url, options) {
let req = this.http.delete(this.formatUrl(url), options);
return new RxjsHttpResp(req, url, this.config.isProd);
}
download(url, body) {
const u = this.formatUrl(url);
const req = body ?
this.http.post(u, body, { observe: 'response', responseType: 'blob' }) :
this.http.get(u, { observe: 'response', responseType: 'blob' });
return req.pipe(tap(t => {
const filename = t.headers.get('content-disposition')
?.split(';')[1]
.split('filename')[1]
.split('=')[1]
.trim();
if (t.body)
saveAs(t.body, filename);
}));
}
}
HttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i2.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
HttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: HttpService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: HttpService, decorators: [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.ConfigurationService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZGJvYXJkYm94L25neC1ib3gvc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBSS9ELE1BQU0sT0FBTyxXQUFXO0lBRXBCLFlBQ1csSUFBZ0IsRUFDaEIsTUFBNEI7UUFENUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFzQjtJQUNuQyxDQUFDO0lBRUwsUUFBUSxDQUFDLEdBQVcsRUFBRSxRQUFnQixVQUFVLEVBQUUsT0FBZ0I7UUFDOUQsSUFBSSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksZUFBZSxJQUFJLFVBQVUsS0FBSyxFQUFFLENBQUM7UUFFMUUsSUFBSSxPQUFPO1lBQUUsR0FBRyxJQUFJLFlBQVksa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUU5RCxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVztRQUNqQixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzlCLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFOUMsSUFBSSxHQUFHLENBQUMsVUFB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R0EzRVEsV0FBVzs0R0FBWCxXQUFXLGNBREUsTUFBTTsyRkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUmVzcG9uc2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRhcCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gXCJmaWxlLXNhdmVyXCI7XHJcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXJ2aWNlIH0gZnJvbSBcIi4vY29uZmlnLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUnhqc0h0dHBSZXNwIH0gZnJvbSAnLi9oZWxwZXJzL3J4anMtaHR0cC1yZXNwLmhlbHBlcic7XHJcbmltcG9ydCB7IEh0dHBPcHRpb25zIH0gZnJvbSAnLi9oZWxwZXJzL2h0dHAtb3B0aW9ucy5oZWxwZXInO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICBwdWJsaWMgY29uZmlnOiBDb25maWd1cmF0aW9uU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBmYWxsYmFjayh1cmw6IHN0cmluZywgZ3JvdXA6IHN0cmluZyA9ICdmYWxsYmFjaycsIHJlZmVyZXI/OiBzdHJpbmcpIHtcclxuICAgICAgICB2YXIgcGF0aCA9IGVuY29kZVVSSUNvbXBvbmVudCh1cmwpO1xyXG4gICAgICAgIGxldCB1cmkgPSBgJHt0aGlzLmNvbmZpZy5jb3JzRmFsbGJhY2t9L3Byb3h5P3BhdGg9JHtwYXRofSZncm91cD0ke2dyb3VwfWA7XHJcblxyXG4gICAgICAgIGlmIChyZWZlcmVyKSB1cmkgKz0gYCZyZWZlcmVyPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlZmVyZXIpfWA7XHJcblxyXG4gICAgICAgIHJldHVybiB1cmk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybWF0VXJsKHVybDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHVybC5pbmRleE9mKCdodHRwczovLycpICE9PSAtMSB8fFxyXG4gICAgICAgICAgICB1cmwuaW5kZXhPZignaHR0cDovLycpICE9PSAtMSkgcmV0dXJuIHVybDtcclxuXHJcbiAgICAgICAgaWYgKHVybC5zdGFydHNXaXRoKCcvJykpXHJcbiAgICAgICAgICAgIHVybCA9IHVybC5zdWJzdHJpbmcoMSk7XHJcblxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmNvbmZpZy5hcGlVcmx9LyR7dXJsfWA7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0PFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgcmVxID0gdGhpcy5odHRwLmdldDxUPihcclxuICAgICAgICAgICAgdGhpcy5mb3JtYXRVcmwodXJsKSxcclxuICAgICAgICAgICAgb3B0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSeGpzSHR0cFJlc3A8VD4ocmVxLCB1cmwsIHRoaXMuY29uZmlnLmlzUHJvZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcG9zdDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgcmVxID0gdGhpcy5odHRwLnBvc3Q8VD4oXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybWF0VXJsKHVybCksXHJcbiAgICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICAgIG9wdGlvbnNcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBuZXcgUnhqc0h0dHBSZXNwPFQ+KHJlcSwgdXJsLCB0aGlzLmNvbmZpZy5pc1Byb2QpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1dDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgcmVxID0gdGhpcy5odHRwLnB1dDxUPihcclxuICAgICAgICAgICAgdGhpcy5mb3JtYXRVcmwodXJsKSxcclxuICAgICAgICAgICAgYm9keSxcclxuICAgICAgICAgICAgb3B0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSeGpzSHR0cFJlc3A8VD4ocmVxLCB1cmwsIHRoaXMuY29uZmlnLmlzUHJvZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogSHR0cE9wdGlvbnMpIHtcclxuICAgICAgICBsZXQgcmVxID0gdGhpcy5odHRwLmRlbGV0ZTxUPih0aGlzLmZvcm1hdFVybCh1cmwpLCBvcHRpb25zKTtcclxuICAgICAgICByZXR1cm4gbmV3IFJ4anNIdHRwUmVzcDxUPihyZXEsIHVybCwgdGhpcy5jb25maWcuaXNQcm9kKTtcclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZCh1cmw6IHN0cmluZyk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PjtcclxuICAgIGRvd25sb2FkKHVybDogc3RyaW5nLCBib2R5OiBhbnkpOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxCbG9iPj47XHJcbiAgICBkb3dubG9hZCh1cmw6IHN0cmluZywgYm9keT86IGFueSkge1xyXG4gICAgICAgIGNvbnN0IHUgPSB0aGlzLmZvcm1hdFVybCh1cmwpO1xyXG4gICAgICAgIGNvbnN0IHJlcSA9IGJvZHkgPyBcclxuICAgICAgICAgICAgdGhpcy5odHRwLnBvc3QodSwgYm9keSwgeyBvYnNlcnZlOiAncmVzcG9uc2UnLCByZXNwb25zZVR5cGU6ICdibG9iJyB9KSA6IFxyXG4gICAgICAgICAgICB0aGlzLmh0dHAuZ2V0KHUsIHsgb2JzZXJ2ZTogJ3Jlc3BvbnNlJywgcmVzcG9uc2VUeXBlOiAnYmxvYicgfSk7XHJcbiAgICAgICAgcmV0dXJuIHJlcS5waXBlKFxyXG4gICAgICAgICAgICB0YXAodCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHQuaGVhZGVycy5nZXQoJ2NvbnRlbnQtZGlzcG9zaXRpb24nKVxyXG4gICAgICAgICAgICAgICAgICAgID8uc3BsaXQoJzsnKVsxXVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnZmlsZW5hbWUnKVsxXVxyXG4gICAgICAgICAgICAgICAgICAgIC5zcGxpdCgnPScpWzFdXHJcbiAgICAgICAgICAgICAgICAgICAgLnRyaW0oKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodC5ib2R5KSBzYXZlQXModC5ib2R5LCBmaWxlbmFtZSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG59Il19