UNPKG

@hpe/angular-toolkit

Version:

Hewlett-Packard Enterprise : Angular toolkit for rapid project development

147 lines (146 loc) 15 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ //============================================================================= //=== //=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP. //=== //=== Use of this source code is governed by an MIT-style license that can be //=== found in the LICENSE file //============================================================================= import { Injectable } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { DomSanitizer } from "@angular/platform-browser"; import { throwError } from "rxjs"; import { catchError, map, finalize } from "rxjs/operators"; import { AppEvent } from "@hpe/angular-toolkit/model"; import { EventBusService } from "./eventbus-service"; export class HttpService { /** * @param {?} httpClient * @param {?} eventBusService * @param {?} domSanitizer */ constructor(httpClient, eventBusService, domSanitizer) { this.httpClient = httpClient; this.eventBusService = eventBusService; this.domSanitizer = domSanitizer; this.openRequests = 0; } /** * @return {?} */ get loading() { return (this.openRequests > 0); } /** * @param {?} url * @param {?=} options * @return {?} */ getObject(url, options) { this.showLoader(); //--- "Pragma": "no-cache" for IE 11 let /** @type {?} */ header = { "Pragma": "no-cache", "Cache-Control": "no-cache", "Expires": "0" }; return this.httpClient.get(url, { params: options, headers: header }).pipe(catchError((error) => this.handleError(error)), finalize(() => this.hideLoader())); } /** * @param {?} url * @param {?=} options * @return {?} */ getBlob(url, options) { this.showLoader(); //--- Add timestamp to change static url to dynamic for IE 11 if (options != null) { options.ts = Date.now(); } return this.httpClient.get(url, { params: options, responseType: 'blob' }).pipe(map(e => this.getSanitizedUrl(URL.createObjectURL(e))), catchError((error) => this.handleError(error)), finalize(() => this.hideLoader())); } /** * @param {?} url * @param {?} object * @param {?=} options * @return {?} */ postObject(url, object, options) { this.showLoader(); return this.httpClient.post(url, object, options).pipe(catchError((error) => this.handleError(error)), finalize(() => this.hideLoader())); } /** * @param {?} url * @return {?} */ getSanitizedUrl(url) { return this.domSanitizer.bypassSecurityTrustResourceUrl(url); } /** * @param {?} response * @return {?} */ handleError(response) { console.log("Got the following HTTP error : " + JSON.stringify(response)); let /** @type {?} */ error; if (response.status == 422) { //--- Unprocessable entity error = response.error; } else { error = { code: response.status.toString(), error: response.error.toString() }; } this.eventBusService.emitToError(error); return throwError(error); } /** * @return {?} */ showLoader() { if (++this.openRequests == 1) { this.eventBusService.emitToApp(new AppEvent(AppEvent.SUBMIT_START)); } } /** * @return {?} */ hideLoader() { if (--this.openRequests == 0) { this.eventBusService.emitToApp(new AppEvent(AppEvent.SUBMIT_END)); } } } HttpService.decorators = [ { type: Injectable }, ]; /** @nocollapse */ HttpService.ctorParameters = () => [ { type: HttpClient, }, { type: EventBusService, }, { type: DomSanitizer, }, ]; function HttpService_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ HttpService.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ HttpService.ctorParameters; /** @type {?} */ HttpService.prototype.openRequests; /** @type {?} */ HttpService.prototype.httpClient; /** @type {?} */ HttpService.prototype.eventBusService; /** @type {?} */ HttpService.prototype.domSanitizer; } //============================================================================= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGhwZS9hbmd1bGFyLXRvb2xraXQvc2VydmljZS8iLCJzb3VyY2VzIjpbImh0dHAtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBUSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFRLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUd2RCxPQUFPLEVBQWEsVUFBVSxFQUFDLE1BQVMsTUFBTSxDQUFDO0FBQy9DLE9BQU8sRUFBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQWMsTUFBVSw0QkFBNEIsQ0FBQztBQUVyRSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQWdCLG9CQUFvQixDQUFBO0FBSzVELE1BQU07Ozs7OztJQWdCTCxZQUFvQixVQUE0QixFQUNyQyxpQkFDQTtRQUZTLGVBQVUsR0FBVixVQUFVLENBQWtCO1FBQ3JDLG9CQUFlLEdBQWYsZUFBZTtRQUNmLGlCQUFZLEdBQVosWUFBWTs0QkFWUyxDQUFDO0tBVWE7Ozs7UUFRbkMsT0FBTztRQUNqQixNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDOzs7Ozs7O0lBS3pCLFNBQVMsQ0FBQyxHQUFZLEVBQUUsT0FBYztRQUU1QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7O1FBSWxCLHFCQUFJLE1BQU0sR0FBRztZQUNaLFFBQVEsRUFBVSxVQUFVO1lBQzVCLGVBQWUsRUFBRyxVQUFVO1lBQzVCLFNBQVMsRUFBUyxHQUFHO1NBQ3JCLENBQUM7UUFFRixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsTUFBTSxF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LFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1NBQ2xFOzs7O1lBbklGLFVBQVU7Ozs7WUFaSCxVQUFVO1lBUVYsZUFBZTtZQVBmLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLz09PVxuLy89PT0gKEMpIENvcHlyaWdodCAyMDE4IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQLlxuLy89PT1cbi8vPT09IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4vLz09PSBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gICBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtIdHRwQ2xpZW50fSAgIGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5pbXBvcnQge1NhZmVVcmx9ICAgICAgZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvc3JjL3NlY3VyaXR5L2RvbV9zYW5pdGl6YXRpb25fc2VydmljZVwiO1xuXG5pbXBvcnQge09ic2VydmFibGUsIHRocm93RXJyb3J9ICAgIGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcCwgZmluYWxpemV9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHtBcHBFdmVudCwgRXJyb3JFdmVudCB9ICAgICBmcm9tIFwiQGhwZS9hbmd1bGFyLXRvb2xraXQvbW9kZWxcIjtcblxuaW1wb3J0IHtFdmVudEJ1c1NlcnZpY2V9ICAgICAgICAgICBmcm9tIFwiLi9ldmVudGJ1cy1zZXJ2aWNlXCJcblxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2Uge1xuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBWYXJpYWJsZXNcblx0Ly8tLS1cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHJpdmF0ZSBvcGVuUmVxdWVzdHMgOiBudW1iZXIgPSAwO1xuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBDb25zdHJ1Y3RvclxuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBDbGllbnQgICAgICA6IEh0dHBDbGllbnQsXG5cdFx0XHRcdHByaXZhdGUgZXZlbnRCdXNTZXJ2aWNlIDogRXZlbnRCdXNTZXJ2aWNlLFxuXHRcdFx0XHRwcml2YXRlIGRvbVNhbml0aXplciAgICA6IERvbVNhbml0aXplciApIHt9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIEFQSSBtZXRob2RzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHB1YmxpYyBnZXQgbG9hZGluZygpIDogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICh0aGlzLm9wZW5SZXF1ZXN0cyA+IDApO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHVibGljIGdldE9iamVjdCh1cmwgOiBzdHJpbmcsIG9wdGlvbnM/IDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuXHRcdHRoaXMuc2hvd0xvYWRlcigpO1xuXG5cdFx0Ly8tLS0gXCJQcmFnbWFcIjogXCJuby1jYWNoZVwiIGZvciBJRSAxMVxuXG5cdFx0bGV0IGhlYWRlciA9IHtcblx0XHRcdFwiUHJhZ21hXCIgICAgICAgIDogXCJuby1jYWNoZVwiLFxuXHRcdFx0XCJDYWNoZS1Db250cm9sXCIgOiBcIm5vLWNhY2hlXCIsXG5cdFx0XHRcIkV4cGlyZXNcIiAgICAgICA6IFwiMFwiXG5cdFx0fTtcblxuXHRcdHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHVybCwgeyBwYXJhbXM6IG9wdGlvbnMsIGhlYWRlcnMgOiBoZWFkZXIgfSkucGlwZShcblx0XHRcdGNhdGNoRXJyb3IoKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSksXG5cdFx0XHRmaW5hbGl6ZSAgKCgpICAgICAgPT4gdGhpcy5oaWRlTG9hZGVyKCkpXG5cdFx0KTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHB1YmxpYyBnZXRCbG9iKHVybCA6IHN0cmluZywgb3B0aW9ucz8gOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuXG5cdFx0dGhpcy5zaG93TG9hZGVyKCk7XG5cblx0XHQvLy0tLSBBZGQgdGltZXN0YW1wIHRvIGNoYW5nZSBzdGF0aWMgdXJsIHRvIGR5bmFtaWMgZm9yIElFIDExXG5cblx0XHRpZiAob3B0aW9ucyAhPSBudWxsKSB7XG5cdFx0XHRvcHRpb25zLnRzID0gRGF0ZS5ub3coKTtcblx0XHR9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsLCB7IHBhcmFtczogb3B0aW9ucywgcmVzcG9uc2VUeXBlIDogJ2Jsb2InfSkucGlwZShcblx0XHRcdG1hcChlID0+IHRoaXMuZ2V0U2FuaXRpemVkVXJsKFVSTC5jcmVhdGVPYmplY3RVUkwoZSkpKSxcblx0XHRcdGNhdGNoRXJyb3IoKGVycm9yKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSksXG5cdFx0XHRmaW5hbGl6ZSgoKSA9PiB0aGlzLmhpZGVMb2FkZXIoKSlcblx0XHQpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHVibGljIHBvc3RPYmplY3QodXJsOiBzdHJpbmcsIG9iamVjdDogYW55LCBvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgICAgICB0aGlzLnNob3dMb2FkZXIoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QgKHVybCwgb2JqZWN0LCBvcHRpb25zKS5waXBlKFxuXHRcdFx0Y2F0Y2hFcnJvcigoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKSxcblx0XHRcdGZpbmFsaXplICAoKCkgICAgICA9PiB0aGlzLmhpZGVMb2FkZXIoKSlcblx0XHQpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHVibGljIGdldFNhbml0aXplZFVybCh1cmwgOiBzdHJpbmcpOiBTYWZlVXJsIHtcblx0XHRyZXR1cm4gdGhpcy5kb21TYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gUHJpdmF0ZSBtZXRob2RzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHByaXZhdGUgaGFuZGxlRXJyb3IocmVzcG9uc2UgOiBhbnkpIDogT2JzZXJ2YWJsZTxhbnk+IHtcblxuXHRcdGNvbnNvbGUubG9nKFwiR290IHRoZSBmb2xsb3dpbmcgSFRUUCBlcnJvciA6IFwiICsgSlNPTi5zdHJpbmdpZnkocmVzcG9uc2UpKTtcblxuXHRcdGxldCBlcnJvciA6IEVycm9yRXZlbnQ7XG5cblx0XHRpZiAocmVzcG9uc2Uuc3RhdHVzID09IDQyMikge1xuXHRcdFx0Ly8tLS0gVW5wcm9jZXNzYWJsZSBlbnRpdHlcblx0XHRcdGVycm9yID0gcmVzcG9uc2UuZXJyb3I7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0ZXJyb3IgPSB7XG5cdFx0XHRcdGNvZGUgOiByZXNwb25zZS5zdGF0dXMudG9TdHJpbmcoKSxcblx0XHRcdFx0ZXJyb3I6IHJlc3BvbnNlLmVycm9yLnRvU3RyaW5nKClcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0dGhpcy5ldmVudEJ1c1NlcnZpY2UuZW1pdFRvRXJyb3IoZXJyb3IpO1xuXG5cdFx0cmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0cHJpdmF0ZSBzaG93TG9hZGVyKCk6IHZvaWQge1xuXG5cdFx0aWYgKCsrdGhpcy5vcGVuUmVxdWVzdHMgPT0gMSkge1xuXHRcdFx0dGhpcy5ldmVudEJ1c1NlcnZpY2UuZW1pdFRvQXBwKG5ldyBBcHBFdmVudChBcHBFdmVudC5TVUJNSVRfU1RBUlQpKTtcblx0XHR9XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRwcml2YXRlIGhpZGVMb2FkZXIoKTogdm9pZCB7XG5cblx0XHRpZiAoLS10aGlzLm9wZW5SZXF1ZXN0cyA9PSAwKSB7XG5cdFx0XHR0aGlzLmV2ZW50QnVzU2VydmljZS5lbWl0VG9BcHAobmV3IEFwcEV2ZW50KEFwcEV2ZW50LlNVQk1JVF9FTkQpKTtcblx0XHR9XG5cdH1cbn1cblxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIl19