ngx-endpoints
Version:
A library to dynamically load data from http endpoints / urls in angular
87 lines • 7.95 kB
JavaScript
/**
* @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==