UNPKG

@elemental-concept/grappa

Version:

Decorator-powered REST client for Angular and its HttpClient

43 lines 6.33 kB
import { Injectable } from '@angular/core'; import { UrlParser } from '../../public'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; export class RestClientService { constructor(http) { this.http = http; this.request = (request, observe) => { const method = request.method.toUpperCase(); const baseUrl = this.getBaseUrl(request); const body = this.getBody(request, method); return this.http .request(method, UrlParser.parse(baseUrl, request.endpoint, request.args), { body, headers: request.headers, params: request.params, observe: request.reportProgress ? 'events' : observe, responseType: 'json', reportProgress: request.reportProgress }); }; this.getBaseUrl = (request) => typeof request.baseUrl === 'function' ? request.baseUrl() : request.baseUrl; this.getBody = (request, method) => { if (method === 'PATCH' || method === 'POST' || method === 'PUT') { return request.emptyBody ? null : request.args.length > 0 ? request.args[request.args.length - 1] : undefined; } return null; }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RestClientService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RestClientService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: RestClientService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: i1.HttpClient }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC1jbGllbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi9zcmMvbGliL2ludGVybmFsL3Jlc3QtY2xpZW50L3Jlc3QtY2xpZW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUszQyxPQUFPLEVBQStDLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7O0FBR3RGLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUc3QyxZQUFPLEdBQUcsQ0FBQyxPQUFvQixFQUFFLE9BQXVCLEVBQWlCLEVBQUU7WUFDekUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM1QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTNDLE9BQU8sSUFBSSxDQUFDLElBQUk7aUJBQ2IsT0FBTyxDQUNOLE1BQU0sRUFDTixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFDeEQ7Z0JBQ0UsSUFBSTtnQkFDSixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTztnQkFDcEQsWUFBWSxFQUFFLE1BQU07Z0JBQ3BCLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYzthQUN2QyxDQUNGLENBQUM7UUFDTixDQUFDLENBQUM7UUFFTSxlQUFVLEdBQUcsQ0FBQyxPQUFvQixFQUFVLEVBQUUsQ0FDcEQsT0FBTyxPQUFPLENBQUMsT0FBTyxLQUFLLFVBQVU7WUFDbkMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDbkIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFZCxZQUFPLEdBQUcsQ0FBQyxPQUFvQixFQUFFLE1BQWMsRUFBTyxFQUFFO1lBQzlELElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLEtBQUssTUFBTSxJQUFJLE1BQU0sS0FBSyxLQUFLLEVBQUU7Z0JBQy9ELE9BQU8sT0FBTyxDQUFDLFNBQVM7b0JBQ3RCLENBQUMsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDO3dCQUN2QixDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUU7d0JBQ3pDLENBQUMsQ0FBQyxTQUFTLENBQUM7YUFDakI7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQXJDRixDQUFDOzhHQUZVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBREosTUFBTTs7MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBIdHRwUmVzdENsaWVudCwgT2JzZXJ2ZU9wdGlvbnMsIFJlc3RSZXF1ZXN0LCBVcmxQYXJzZXIgfSBmcm9tICcuLi8uLi9wdWJsaWMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFJlc3RDbGllbnRTZXJ2aWNlPFQ+IGltcGxlbWVudHMgSHR0cFJlc3RDbGllbnQ8VD4ge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCkge1xyXG4gIH1cclxuXHJcbiAgcmVxdWVzdCA9IChyZXF1ZXN0OiBSZXN0UmVxdWVzdCwgb2JzZXJ2ZTogT2JzZXJ2ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPFQ+ID0+IHtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHJlcXVlc3QubWV0aG9kLnRvVXBwZXJDYXNlKCk7XHJcbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5nZXRCYXNlVXJsKHJlcXVlc3QpO1xyXG4gICAgY29uc3QgYm9keSA9IHRoaXMuZ2V0Qm9keShyZXF1ZXN0LCBtZXRob2QpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnJlcXVlc3QoXHJcbiAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgIFVybFBhcnNlci5wYXJzZShiYXNlVXJsLCByZXF1ZXN0LmVuZHBvaW50LCByZXF1ZXN0LmFyZ3MpLFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJvZHksXHJcbiAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0LmhlYWRlcnMsXHJcbiAgICAgICAgICBwYXJhbXM6IHJlcXVlc3QucGFyYW1zLFxyXG4gICAgICAgICAgb2JzZXJ2ZTogcmVxdWVzdC5yZXBvcnRQcm9ncmVzcyA/ICdldmVudHMnIDogb2JzZXJ2ZSxcclxuICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxyXG4gICAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcXVlc3QucmVwb3J0UHJvZ3Jlc3NcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXRCYXNlVXJsID0gKHJlcXVlc3Q6IFJlc3RSZXF1ZXN0KTogc3RyaW5nID0+XHJcbiAgICB0eXBlb2YgcmVxdWVzdC5iYXNlVXJsID09PSAnZnVuY3Rpb24nXHJcbiAgICAgID8gcmVxdWVzdC5iYXNlVXJsKClcclxuICAgICAgOiByZXF1ZXN0LmJhc2VVcmw7XHJcblxyXG4gIHByaXZhdGUgZ2V0Qm9keSA9IChyZXF1ZXN0OiBSZXN0UmVxdWVzdCwgbWV0aG9kOiBzdHJpbmcpOiBhbnkgPT4ge1xyXG4gICAgaWYgKG1ldGhvZCA9PT0gJ1BBVENIJyB8fCBtZXRob2QgPT09ICdQT1NUJyB8fCBtZXRob2QgPT09ICdQVVQnKSB7XHJcbiAgICAgIHJldHVybiByZXF1ZXN0LmVtcHR5Qm9keVxyXG4gICAgICAgID8gbnVsbFxyXG4gICAgICAgIDogcmVxdWVzdC5hcmdzLmxlbmd0aCA+IDBcclxuICAgICAgICAgID8gcmVxdWVzdC5hcmdzWyByZXF1ZXN0LmFyZ3MubGVuZ3RoIC0gMSBdXHJcbiAgICAgICAgICA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9O1xyXG59XHJcbiJdfQ==