UNPKG

hal-4-angular

Version:

This Angular module offers a HAL/JSON http-client to easily interact with a Spring Data Rest API or any API that implements the Spring Data Rest resource model

205 lines (204 loc) 12.3 kB
import { throwError as observableThrowError } from 'rxjs'; import { catchError, map } from 'rxjs/operators'; import { ResourceHelper } from './resource-helper'; import { Injectable } from '@angular/core'; import { HttpParams } from '@angular/common/http'; import { ExternalService } from './external.service'; import { CustomEncoder } from "./CustomEncoder"; var ResourceService = /** @class */ (function () { function ResourceService(externalService) { this.externalService = externalService; } ResourceService.getURL = function () { return ResourceHelper.getURL(); }; ResourceService.prototype.getAll = function (type, resource, _embedded, options, subType) { var uri = this.getResourceUrl(resource); var params = ResourceHelper.optionParams(new HttpParams({ encoder: new CustomEncoder() }), options); var result = ResourceHelper.createEmptyResult(_embedded); this.setUrls(result); result.sortInfo = options ? options.sort : undefined; var observable = ResourceHelper.getHttp().get(uri, { headers: ResourceHelper.headers, params: params }); return observable.pipe(map(function (response) { return ResourceHelper.instantiateResourceCollection(type, response, result, subType); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.get = function (type, resource, id, params) { var uri = this.getResourceUrl(resource).concat('/', id); var result = new type(); var httpParams = ResourceHelper.params(new HttpParams(), params); this.setUrlsResource(result); var observable = ResourceHelper.getHttp().get(uri, { headers: ResourceHelper.headers, params: httpParams }); return observable.pipe(map(function (data) { return ResourceHelper.instantiateResource(result, data); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.selfURI = function (type, resource, id) { return this.getResourceUrl(resource).concat('/', id); }; ResourceService.prototype.getBySelfLink = function (type, resourceLink) { var result = new type(); this.setUrlsResource(result); var observable = ResourceHelper.getHttp().get(ResourceHelper.getProxy(resourceLink), { headers: ResourceHelper.headers }); return observable.pipe(map(function (data) { return ResourceHelper.instantiateResource(result, data); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.search = function (type, query, resource, _embedded, options, subType) { var uri = this.getResourceUrl(resource).concat('/search/', query); var params = ResourceHelper.optionParams(new HttpParams({ encoder: new CustomEncoder() }), options); var result = ResourceHelper.createEmptyResult(_embedded); this.setUrls(result); var observable = ResourceHelper.getHttp().get(uri, { headers: ResourceHelper.headers, params: params }); return observable.pipe(map(function (response) { return ResourceHelper.instantiateResourceCollection(type, response, result, subType); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.searchSingle = function (type, query, resource, options) { var uri = this.getResourceUrl(resource).concat('/search/', query); var params = ResourceHelper.optionParams(new HttpParams({ encoder: new CustomEncoder() }), options); var result = new type(); this.setUrlsResource(result); var observable = ResourceHelper.getHttp().get(uri, { headers: ResourceHelper.headers, params: params }); return observable.pipe(map(function (response) { return ResourceHelper.instantiateResource(result, response); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.customQuery = function (type, query, resource, _embedded, options) { var uri = this.getResourceUrl(resource + query); var params = ResourceHelper.optionParams(new HttpParams({ encoder: new CustomEncoder() }), options); var result = ResourceHelper.createEmptyResult(_embedded); this.setUrls(result); var observable = ResourceHelper.getHttp().get(uri, { headers: ResourceHelper.headers, params: params }); return observable.pipe(map(function (response) { return ResourceHelper.instantiateResourceCollection(type, response, result); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.customQueryPost = function (type, query, resource, _embedded, options, body) { var uri = this.getResourceUrl(resource + query); var params = ResourceHelper.optionParams(new HttpParams(), options); var result = ResourceHelper.createEmptyResult(_embedded); this.setUrls(result); var observable = ResourceHelper.getHttp().post(uri, body, { headers: ResourceHelper.headers, params: params }); return observable.pipe(map(function (response) { return ResourceHelper.instantiateResourceCollection(type, response, result); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.getByRelation = function (type, resourceLink) { var result = new type(); this.setUrlsResource(result); var observable = ResourceHelper.getHttp().get(resourceLink, { headers: ResourceHelper.headers }); return observable.pipe(map(function (data) { return ResourceHelper.instantiateResource(result, data); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.getByRelationArray = function (type, resourceLink, _embedded, builder) { var result = ResourceHelper.createEmptyResult(_embedded); this.setUrls(result); var observable = ResourceHelper.getHttp().get(resourceLink, { headers: ResourceHelper.headers }); return observable.pipe(map(function (response) { return ResourceHelper.instantiateResourceCollection(type, response, result, builder); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.count = function (resource) { var uri = this.getResourceUrl(resource).concat('/search/countAll'); return ResourceHelper.getHttp().get(uri, { headers: ResourceHelper.headers, observe: 'body' }).pipe(map(function (response) { return Number(response.body); }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.create = function (selfResource, entity) { var uri = ResourceHelper.getURL() + selfResource; var payload = ResourceHelper.resolveRelations(entity); this.setUrlsResource(entity); var observable = ResourceHelper.getHttp().post(uri, payload, { headers: ResourceHelper.headers, observe: 'response' }); return observable.pipe(map(function (response) { if (response.status >= 200 && response.status <= 207) return ResourceHelper.instantiateResource(entity, response.body); else if (response.status == 500) { var body = response.body; return observableThrowError(body.error); } }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.query = function (resource, query, options) { var uri = this.getResourceUrl(resource).concat('/search/', query); var params = ResourceHelper.optionParams(new HttpParams(), options); return ResourceHelper.getHttp().get(uri, { headers: ResourceHelper.headers, params: params }).pipe(map(function (response) { return response; }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.update = function (entity) { var uri = ResourceHelper.getProxy(entity._links.self.href); var payload = ResourceHelper.resolveRelations(entity); this.setUrlsResource(entity); var observable = ResourceHelper.getHttp().put(uri, payload, { headers: ResourceHelper.headers, observe: 'response' }); return observable.pipe(map(function (response) { if (response.status >= 200 && response.status <= 207) return ResourceHelper.instantiateResource(entity, response.body); else if (response.status == 500) { var body = response.body; return observableThrowError(body.error); } }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.patch = function (entity) { var uri = ResourceHelper.getProxy(entity._links.self.href); var payload = ResourceHelper.resolveRelations(entity); this.setUrlsResource(entity); var observable = ResourceHelper.getHttp().patch(uri, payload, { headers: ResourceHelper.headers, observe: 'response' }); return observable.pipe(map(function (response) { if (response.status >= 200 && response.status <= 207) return ResourceHelper.instantiateResource(entity, response.body); else if (response.status == 500) { var body = response.body; return observableThrowError(body.error); } }), catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.delete = function (entity) { var uri = ResourceHelper.getProxy(entity._links.self.href); return ResourceHelper.getHttp().delete(uri, { headers: ResourceHelper.headers }).pipe(catchError(function (error) { return observableThrowError(error); })); }; ResourceService.prototype.hasNext = function (resourceArray) { return resourceArray.next_uri != undefined; }; ResourceService.prototype.hasPrev = function (resourceArray) { return resourceArray.prev_uri != undefined; }; ResourceService.prototype.hasFirst = function (resourceArray) { return resourceArray.first_uri != undefined; }; ResourceService.prototype.hasLast = function (resourceArray) { return resourceArray.last_uri != undefined; }; ResourceService.prototype.next = function (resourceArray, type) { return resourceArray.next(type); }; ResourceService.prototype.prev = function (resourceArray, type) { return resourceArray.prev(type); }; ResourceService.prototype.first = function (resourceArray, type) { return resourceArray.first(type); }; ResourceService.prototype.last = function (resourceArray, type) { return resourceArray.last(type); }; ResourceService.prototype.page = function (resourceArray, type, id) { return resourceArray.page(type, id); }; ResourceService.prototype.sortElements = function (resourceArray, type) { var sort = []; for (var _i = 2; _i < arguments.length; _i++) { sort[_i - 2] = arguments[_i]; } return resourceArray.sortElements.apply(resourceArray, [type].concat(sort)); }; ResourceService.prototype.size = function (resourceArray, type, size) { return resourceArray.size(type, size); }; ResourceService.prototype.getResourceUrl = function (resource) { var url = ResourceService.getURL(); if (!url.endsWith('/')) { url = url.concat('/'); } if (resource) { return url.concat(resource); } return url; }; ResourceService.prototype.setUrls = function (result) { result.proxyUrl = this.externalService.getProxyUri(); result.rootUrl = this.externalService.getRootUri(); }; ResourceService.prototype.setUrlsResource = function (result) { result.proxyUrl = this.externalService.getProxyUri(); result.rootUrl = this.externalService.getRootUri(); }; ResourceService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ ResourceService.ctorParameters = function () { return [ { type: ExternalService } ]; }; return ResourceService; }()); export { ResourceService };