UNPKG

ngx-endpoints

Version:

A library to dynamically load data from http endpoints / urls in angular

87 lines 7.95 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Injectable } from '@angular/core'; import { HttpClient, HttpHeaders } from '@angular/common/http'; import { catchError } from 'rxjs/operators'; import { throwError } from 'rxjs'; import * as queryString from 'query-string'; import * as momentRelativism from 'moment-relativism'; import * as moment_ from 'moment'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; /** @type {?} */ const moment = moment_; export class NgxEndpointService { /** * @param {?} _http */ constructor(_http) { this._http = _http; } /** * @return {?} */ ngOnInit() { } /** * Gets data via http client * @template T * @param {?} endPointUrl url that will be requested * @param {?} httpheaders * @return {?} */ getData(endPointUrl, httpheaders) { return tslib_1.__awaiter(this, void 0, void 0, function* () { /** @type {?} */ let headers = new HttpHeaders(); // tslint:disable-next-line:forin // tslint:disable-next-line:forin for (const key in httpheaders) { headers = headers.append(key, httpheaders[key]); } return yield this._http.get(endPointUrl, { headers: headers }).pipe(catchError((err) => { console.log('Cannot request data from ' + endPointUrl, err); return throwError(err); })).toPromise(); }); } /** * Conversion method for relative dates in querystrings * @param {?} endPointUrl return endpointurl with converted dates in querystring * @param {?} momentjsformat * @return {?} */ convertDatesInURL(endPointUrl, momentjsformat) { /** @type {?} */ const urlObject = queryString.parseUrl(endPointUrl); for (const propertyName in urlObject.query) { if (urlObject.query[propertyName].startsWith('now')) { /** @type {?} */ const dateResult = momentRelativism.relativism(urlObject.query[propertyName]); urlObject.query[propertyName] = moment(dateResult).format(momentjsformat); } } /** @type {?} */ const stringified = queryString.stringify(urlObject.query); endPointUrl = urlObject.url + '?' + stringified; return endPointUrl; } } NgxEndpointService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NgxEndpointService.ctorParameters = () => [ { type: HttpClient } ]; /** @nocollapse */ NgxEndpointService.ngInjectableDef = i0.defineInjectable({ factory: function NgxEndpointService_Factory() { return new NgxEndpointService(i0.inject(i1.HttpClient)); }, token: NgxEndpointService, providedIn: "root" }); if (false) { /** @type {?} */ NgxEndpointService.prototype._http; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWVuZHBvaW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWVuZHBvaW50cy8iLCJzb3VyY2VzIjpbImxpYi9uZ3gtZW5kcG9pbnRzL25neC1lbmRwb2ludHMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBTSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEtBQUssV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sbUJBQW1CLENBQUM7QUFDdEQsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7Ozs7TUFDNUIsTUFBTSxHQUFHLE9BQU87QUFJdEIsTUFBTSxPQUFPLGtCQUFrQjs7OztJQUc3QixZQUFvQixLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO0lBQUksQ0FBQzs7OztJQUUxQyxRQUFRO0lBQ1IsQ0FBQzs7Ozs7Ozs7SUFLSyxPQUFPLENBQUksV0FBbUIsRUFBRSxXQUFtQjs7O2dCQUNuRCxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUU7WUFDL0IsaUNBQWlDO1lBRWpDLGlDQUFpQztZQUNqQyxLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRTtnQkFDN0IsT0FBTyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFJLFdBQVcsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDcEUsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLEdBQUcsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUM1RCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FDRCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hCLENBQUM7S0FBQTs7Ozs7OztJQUtELGlCQUFpQixDQUFDLFdBQW1CLEVBQUUsY0FBc0I7O2NBQ3JELFNBQVMsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUNuRCxLQUFLLE1BQU0sWUFBWSxJQUFJLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDMUMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTs7c0JBQzdDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDN0UsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2FBQzNFO1NBQ0Y7O2NBQ0ssV0FBVyxHQUFHLFdBQVcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztRQUMxRCxXQUFXLEdBQUcsU0FBUyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsV0FBVyxDQUFDO1FBQ2hELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7OztZQTVDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFUUSxVQUFVOzs7OztJQWFMLG1DQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgdGhyb3dFcnJvciwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCAqIGFzIHF1ZXJ5U3RyaW5nIGZyb20gJ3F1ZXJ5LXN0cmluZyc7XG5pbXBvcnQgKiBhcyBtb21lbnRSZWxhdGl2aXNtIGZyb20gJ21vbWVudC1yZWxhdGl2aXNtJztcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JztcbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZ3hFbmRwb2ludFNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gIH1cbiAgLyoqXG4gICAqIEdldHMgZGF0YSB2aWEgaHR0cCBjbGllbnRcbiAgICogQHBhcmFtIGVuZFBvaW50VXJsIHVybCB0aGF0IHdpbGwgYmUgcmVxdWVzdGVkXG4gICAqL1xuICBhc3luYyBnZXREYXRhPFQ+KGVuZFBvaW50VXJsOiBzdHJpbmcsIGh0dHBoZWFkZXJzOiBPYmplY3QpOiBQcm9taXNlPFQ+IHtcbiAgICBsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpmb3JpblxuXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXG4gICAgZm9yIChjb25zdCBrZXkgaW4gaHR0cGhlYWRlcnMpIHtcbiAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLmFwcGVuZChrZXksIGh0dHBoZWFkZXJzW2tleV0pO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5faHR0cC5nZXQ8VD4oZW5kUG9pbnRVcmwsIHsgaGVhZGVyczogaGVhZGVycyB9KS5waXBlPFQ+KFxuICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdDYW5ub3QgcmVxdWVzdCBkYXRhIGZyb20gJyArIGVuZFBvaW50VXJsLCBlcnIpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xuICAgIH0pXG4gICAgKS50b1Byb21pc2UoKTtcbiAgfVxuICAvKipcbiAgICogQ29udmVyc2lvbiBtZXRob2QgZm9yIHJlbGF0aXZlIGRhdGVzIGluIHF1ZXJ5c3RyaW5nc1xuICAgKiBAcGFyYW0gZW5kUG9pbnRVcmwgcmV0dXJuIGVuZHBvaW50dXJsIHdpdGggY29udmVydGVkIGRhdGVzIGluIHF1ZXJ5c3RyaW5nXG4gICAqL1xuICBjb252ZXJ0RGF0ZXNJblVSTChlbmRQb2ludFVybDogc3RyaW5nLCBtb21lbnRqc2Zvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmxPYmplY3QgPSBxdWVyeVN0cmluZy5wYXJzZVVybChlbmRQb2ludFVybCk7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eU5hbWUgaW4gdXJsT2JqZWN0LnF1ZXJ5KSB7XG4gICAgICBpZiAodXJsT2JqZWN0LnF1ZXJ5W3Byb3BlcnR5TmFtZV0uc3RhcnRzV2l0aCgnbm93JykpIHtcbiAgICAgICAgY29uc3QgZGF0ZVJlc3VsdCA9IG1vbWVudFJlbGF0aXZpc20ucmVsYXRpdmlzbSh1cmxPYmplY3QucXVlcnlbcHJvcGVydHlOYW1lXSk7XG4gICAgICAgIHVybE9iamVjdC5xdWVyeVtwcm9wZXJ0eU5hbWVdID0gbW9tZW50KGRhdGVSZXN1bHQpLmZvcm1hdChtb21lbnRqc2Zvcm1hdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHN0cmluZ2lmaWVkID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHVybE9iamVjdC5xdWVyeSk7XG4gICAgZW5kUG9pbnRVcmwgPSB1cmxPYmplY3QudXJsICsgJz8nICsgc3RyaW5naWZpZWQ7XG4gICAgcmV0dXJuIGVuZFBvaW50VXJsO1xuICB9XG5cbn1cbiJdfQ==