UNPKG

@js-sugar/angular

Version:

JS-Sugar core package (Angular)

108 lines 14.4 kB
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==