@js-sugar/angular
Version:
JS-Sugar core package (Angular)
108 lines • 14.4 kB
JavaScript
import { HttpParams } from '@angular/common/http';
import { HttpServiceBaseUrl } from './types';
import { Inject, Injectable, Optional } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
export class HttpService {
constructor(_http, baseUrl) {
this._http = _http;
this._baseUrl = typeof baseUrl == 'string' ? baseUrl : '';
}
get(url, options) {
const URL = this.makeUrl(url, options);
const OPTIONS = this.makeHttpClientOptions(options);
return this.mapResponse(this._http.get(URL, OPTIONS));
}
post(url, body, options) {
const URL = this.makeUrl(url, options);
const BODY = this.makeBody(body, options);
const OPTIONS = this.makeHttpClientOptions(options);
return this.mapResponse(this._http.post(URL, BODY, OPTIONS));
}
put(url, body, options) {
const URL = this.makeUrl(url, options);
const BODY = this.makeBody(body, options);
const OPTIONS = this.makeHttpClientOptions(options);
return this.mapResponse(this._http.put(URL, BODY, OPTIONS));
}
delete(url, options) {
const URL = this.makeUrl(url, options);
const OPTIONS = this.makeHttpClientOptions(options);
return this.mapResponse(this._http.delete(URL, OPTIONS));
}
makeUrl(url, options) {
return (options?.pathType === 'absolute') ? url : (this._baseUrl + url);
}
makeHttpClientOptions(options) {
if (!options) {
return {};
}
const ngOptions = {};
const query = options.query;
if (typeof query === 'object') {
let params = new HttpParams();
for (const key in query) {
if (query.hasOwnProperty(key)) {
const value = query[key];
const type = typeof value;
if (type === 'string' || type === 'number') {
params = params.set(key, value);
}
}
}
ngOptions.params = params;
}
if (options.responseType === 'blob') {
ngOptions.responseType = 'blob';
}
ngOptions.reportProgress = options.reportProgress;
ngOptions.observe = options.observe;
return ngOptions;
}
makeBody(body, options) {
body = this.processBodyFields(body);
if (!options || !options.contentType || options.contentType !== 'multipart/form-data') {
return body;
}
const formData = new FormData();
for (const key in body) {
if (body.hasOwnProperty(key)) {
const field = body[key];
let value;
if (typeof field === 'string' || field instanceof File) {
value = field;
}
else if (typeof field === 'number') {
value = field.toString();
}
else if (typeof field === 'object') {
value = JSON.stringify(field);
}
if (value) {
formData.append(key, value);
}
}
}
return formData;
}
processBodyFields(body) {
return body;
}
mapResponse(res) {
return res;
}
}
HttpService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: HttpServiceBaseUrl, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
HttpService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: HttpService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [HttpServiceBaseUrl]
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2h0dHAvaHR0cC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFLN0QsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDVSxLQUFpQixFQUNlLE9BQWdCO1FBRGhELFVBQUssR0FBTCxLQUFLLENBQVk7UUFHekIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLE9BQU8sSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFTSxHQUFHLENBQUksR0FBVyxFQUFFLE9BQXFCO1FBQzlDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUksR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLElBQUksQ0FBSSxHQUFXLEVBQUUsSUFBUyxFQUFFLE9BQXFCO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FB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UTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBIdHRwT3B0aW9ucywgSHR0cFNlcnZpY2VCYXNlVXJsIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEh0dHBTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9iYXNlVXJsPzogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2h0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEh0dHBTZXJ2aWNlQmFzZVVybCkgYmFzZVVybD86IHN0cmluZ1xyXG4gICkge1xyXG4gICAgdGhpcy5fYmFzZVVybCA9IHR5cGVvZiBiYXNlVXJsID09ICdzdHJpbmcnID8gYmFzZVVybCA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICBjb25zdCBVUkwgPSB0aGlzLm1ha2VVcmwodXJsLCBvcHRpb25zKTtcclxuICAgIGNvbnN0IE9QVElPTlMgPSB0aGlzLm1ha2VIdHRwQ2xpZW50T3B0aW9ucyhvcHRpb25zKTtcclxuICAgIHJldHVybiB0aGlzLm1hcFJlc3BvbnNlPFQ+KHRoaXMuX2h0dHAuZ2V0PFQ+KFVSTCwgT1BUSU9OUykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBvc3Q8VD4odXJsOiBzdHJpbmcsIGJvZHk6IGFueSwgb3B0aW9ucz86IEh0dHBPcHRpb25zKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICBjb25zdCBVUkwgPSB0aGlzLm1ha2VVcmwodXJsLCBvcHRpb25zKTtcclxuICAgIGNvbnN0IEJPRFkgPSB0aGlzLm1ha2VCb2R5KGJvZHksIG9wdGlvbnMpO1xyXG4gICAgY29uc3QgT1BUSU9OUyA9IHRoaXMubWFrZUh0dHBDbGllbnRPcHRpb25zKG9wdGlvbnMpO1xyXG4gICAgcmV0dXJuIHRoaXMubWFwUmVzcG9uc2U8VD4odGhpcy5faHR0cC5wb3N0KFVSTCwgQk9EWSwgT1BUSU9OUykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHB1dDxUPih1cmw6IHN0cmluZywgYm9keTogYW55LCBvcHRpb25zPzogSHR0cE9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGNvbnN0IFVSTCA9IHRoaXMubWFrZVVybCh1cmwsIG9wdGlvbnMpO1xyXG4gICAgY29uc3QgQk9EWSA9IHRoaXMubWFrZUJvZHkoYm9keSwgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBPUFRJT05TID0gdGhpcy5tYWtlSHR0cENsaWVudE9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBSZXNwb25zZTxUPih0aGlzLl9odHRwLnB1dChVUkwsIEJPRFksIE9QVElPTlMpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBkZWxldGU8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBIdHRwT3B0aW9ucyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgY29uc3QgVVJMID0gdGhpcy5tYWtlVXJsKHVybCwgb3B0aW9ucyk7XHJcbiAgICBjb25zdCBPUFRJT05TID0gdGhpcy5tYWtlSHR0cENsaWVudE9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICByZXR1cm4gdGhpcy5tYXBSZXNwb25zZTxUPih0aGlzLl9odHRwLmRlbGV0ZShVUkwsIE9QVElPTlMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZVVybCh1cmw6IHN0cmluZywgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICByZXR1cm4gKG9wdGlvbnM/LnBhdGhUeXBlID09PSAnYWJzb2x1dGUnKSA/IHVybCA6ICh0aGlzLl9iYXNlVXJsICsgdXJsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFrZUh0dHBDbGllbnRPcHRpb25zKG9wdGlvbnM/OiBIdHRwT3B0aW9ucykge1xyXG4gICAgaWYgKCFvcHRpb25zKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBuZ09wdGlvbnM6IGFueSA9IHt9O1xyXG5cclxuICAgIC8vIFF1ZXJ5IFN0cmluZ1xyXG4gICAgY29uc3QgcXVlcnkgPSBvcHRpb25zLnF1ZXJ5O1xyXG4gICAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHF1ZXJ5KSB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5Lmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgIGNvbnN0IHZhbHVlID0gcXVlcnlba2V5XTtcclxuICAgICAgICAgIGNvbnN0IHR5cGUgPSB0eXBlb2YgdmFsdWU7XHJcbiAgICAgICAgICBpZiAodHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9PT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChrZXksIHZhbHVlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbmdPcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXNwb25zZSBUeXBlXHJcbiAgICBpZiAob3B0aW9ucy5yZXNwb25zZVR5cGUgPT09ICdibG9iJykge1xyXG4gICAgICBuZ09wdGlvbnMucmVzcG9uc2VUeXBlID0gJ2Jsb2InO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT3B0aW9ucy5yZXBvcnRQcm9ncmVzcyA9IG9wdGlvbnMucmVwb3J0UHJvZ3Jlc3M7XHJcbiAgICBuZ09wdGlvbnMub2JzZXJ2ZSA9IG9wdGlvbnMub2JzZXJ2ZTtcclxuICAgIHJldHVybiBuZ09wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1ha2VCb2R5KGJvZHk6IGFueSwgb3B0aW9ucz86IEh0dHBPcHRpb25zKSB7XHJcbiAgICBib2R5ID0gdGhpcy5wcm9jZXNzQm9keUZpZWxkcyhib2R5KTtcclxuICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5jb250ZW50VHlwZSB8fCBvcHRpb25zLmNvbnRlbnRUeXBlICE9PSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpIHtcclxuICAgICAgcmV0dXJuIGJvZHk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gY29udGVudFR5cGUgaXMgbXVsdGlwYXJ0L2Zvcm0tZGF0YVxyXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgIGZvciAoY29uc3Qga2V5IGluIGJvZHkpIHtcclxuICAgICAgaWYgKGJvZHkuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gYm9keVtrZXldO1xyXG4gICAgICAgIGxldCB2YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiBmaWVsZCA9PT0gJ3N0cmluZycgfHwgZmllbGQgaW5zdGFuY2VvZiBGaWxlKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGZpZWxkO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkID09PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgdmFsdWUgPSBmaWVsZC50b1N0cmluZygpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGZpZWxkID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgdmFsdWUgPSBKU09OLnN0cmluZ2lmeShmaWVsZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChrZXksIHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmb3JtRGF0YTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvY2Vzc0JvZHlGaWVsZHMoYm9keTogYW55KSB7XHJcbiAgICByZXR1cm4gYm9keTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWFwUmVzcG9uc2U8VD4ocmVzOiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIHJldHVybiByZXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==