air-lib
Version:
This is Air's angular component library
73 lines • 7.53 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { BusMessage } from '../entities/bus-message';
import { HttpResponse } from '@angular/common/http';
import { finalize, tap } from 'rxjs/operators';
import { CommunicationService } from './communication.service';
import * as i0 from "@angular/core";
export class HttpInterceptorService {
constructor() {
this.count = 0;
this.interceptorDto = new BusMessage();
}
/**
* @param {?} req
* @param {?} next
* @return {?}
*/
intercept(req, next) {
/** @type {?} */
const started = Date.now();
/** @type {?} */
let ok;
if (this.count === 0) {
this.interceptorDto.name = 'http started';
CommunicationService.get().emit(this.interceptorDto);
}
this.count++;
// extend server response observable with logging
return next.handle(req)
.pipe(tap(
// Succeeds when there is a response; ignore other events
event => ok = event instanceof HttpResponse ? 'succeeded' : '',
// Operation failed; error is an HttpErrorResponse
error => ok = 'failed'),
// Log when response observable either completes or errors
finalize(() => {
this.count--;
if (this.count === 0) {
this.interceptorDto.name = 'http finished';
CommunicationService.get().emit(this.interceptorDto);
}
/** @type {?} */
const elapsed = Date.now() - started;
/** @type {?} */
const msg = `${req.method} "${req.urlWithParams}"
${ok} in ${elapsed} ms.`;
console.log(msg);
}));
}
}
HttpInterceptorService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
HttpInterceptorService.ctorParameters = () => [];
/** @nocollapse */ HttpInterceptorService.ngInjectableDef = i0.defineInjectable({ factory: function HttpInterceptorService_Factory() { return new HttpInterceptorService(); }, token: HttpInterceptorService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
HttpInterceptorService.prototype.count;
/**
* @type {?}
* @private
*/
HttpInterceptorService.prototype.interceptorDto;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pbnRlcmNlcHRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9odHRwLWludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBNEIsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFLL0QsTUFBTTtJQUlGO1FBRk0sVUFBSyxHQUFHLENBQUMsQ0FBQztRQUdaLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUMxQyxDQUFDOzs7Ozs7SUFDRixTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjs7Y0FDeEMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7O1lBQ3RCLEVBQVU7UUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFHO1lBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztZQUMxQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsSUFBSSxDQUFDLEtBQUssRUFBRyxDQUFDO1FBQ2QsaURBQWlEO1FBQ2pELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7YUFDbEIsSUFBSSxDQUNELEdBQUc7UUFDQyx5REFBeUQ7UUFDekQsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsS0FBSyxZQUFZLFlBQVksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzlELGtEQUFrRDtRQUNsRCxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQ3pCO1FBQ0QsMERBQTBEO1FBQzFELFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsS0FBSyxFQUFHLENBQUM7WUFDZCxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFHO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7Z0JBQzNDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDeEQ7O2tCQUNLLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsT0FBTzs7a0JBQzlCLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLGFBQWE7c0JBQzdDLEVBQUUsT0FBTyxPQUFPLE1BQU07WUFDeEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDTCxDQUFDO0lBQ1YsQ0FBQzs7O1lBeENKLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7Ozs7Ozs7O0lBR0MsdUNBQWtCOzs7OztJQUNoQixnREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJ1c01lc3NhZ2UgfSBmcm9tICcuLi9lbnRpdGllcy9idXMtbWVzc2FnZSc7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0LCBIdHRwSGFuZGxlciwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge0h0dHBFdmVudH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAvc3JjL3Jlc3BvbnNlJzsgLy8gZG9uJ3QgcmVtb3ZlIGZvbGxvd2luZyAyXHJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcy9pbnRlcm5hbC9vYnNlcnZhYmxlJztcclxuaW1wb3J0IHsgZmluYWxpemUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgQ29tbXVuaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuL2NvbW11bmljYXRpb24uc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBjb3VudCA9IDA7XHJcbiAgICBwcml2YXRlIGludGVyY2VwdG9yRHRvOiBCdXNNZXNzYWdlO1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5pbnRlcmNlcHRvckR0byA9IG5ldyBCdXNNZXNzYWdlKCk7XHJcbiAgICAgfVxyXG4gICAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcclxuICAgICAgICBjb25zdCBzdGFydGVkID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgb2s6IHN0cmluZztcclxuICAgICAgICBpZiAodGhpcy5jb3VudCA9PT0gMCApIHtcclxuICAgICAgICAgICAgdGhpcy5pbnRlcmNlcHRvckR0by5uYW1lID0gJ2h0dHAgc3RhcnRlZCc7XHJcbiAgICAgICAgICAgIENvbW11bmljYXRpb25TZXJ2aWNlLmdldCgpLmVtaXQodGhpcy5pbnRlcmNlcHRvckR0byk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY291bnQgKys7XHJcbiAgICAgICAgLy8gZXh0ZW5kIHNlcnZlciByZXNwb25zZSBvYnNlcnZhYmxlIHdpdGggbG9nZ2luZ1xyXG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgdGFwKFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIFN1Y2NlZWRzIHdoZW4gdGhlcmUgaXMgYSByZXNwb25zZTsgaWdub3JlIG90aGVyIGV2ZW50c1xyXG4gICAgICAgICAgICAgICAgICAgIGV2ZW50ID0+IG9rID0gZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UgPyAnc3VjY2VlZGVkJyA6ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIE9wZXJhdGlvbiBmYWlsZWQ7IGVycm9yIGlzIGFuIEh0dHBFcnJvclJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPT4gb2sgPSAnZmFpbGVkJ1xyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgIC8vIExvZyB3aGVuIHJlc3BvbnNlIG9ic2VydmFibGUgZWl0aGVyIGNvbXBsZXRlcyBvciBlcnJvcnNcclxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvdW50IC0tO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvdW50ID09PSAwICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVyY2VwdG9yRHRvLm5hbWUgPSAnaHR0cCBmaW5pc2hlZCc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIENvbW11bmljYXRpb25TZXJ2aWNlLmdldCgpLmVtaXQodGhpcy5pbnRlcmNlcHRvckR0byk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVsYXBzZWQgPSBEYXRlLm5vdygpIC0gc3RhcnRlZDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSBgJHtyZXEubWV0aG9kfSBcIiR7cmVxLnVybFdpdGhQYXJhbXN9XCJcclxuICAgICAgICAgICAgICAgICAgICAke29rfSBpbiAke2VsYXBzZWR9IG1zLmA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobXNnKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl19