@elemental-concept/grappa
Version:
Decorator-powered REST client for Angular and its HttpClient
43 lines • 6.33 kB
JavaScript
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==