Skip to content

Commit e3554cb

Browse files
committed
context class for onRequest callbacks
1 parent 386b6f5 commit e3554cb

6 files changed

Lines changed: 55 additions & 6 deletions

File tree

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from './logging.interceptor.context';
2+
export * from './request.cpu.time.interceptor.context';
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { ExecutionContext } from "@nestjs/common";
2+
3+
export class LoggingInterceptorContext {
4+
apiFunction: string = '';
5+
durationMs: number = 0;
6+
origin: string = '';
7+
statusCode: number = 0;
8+
context!: ExecutionContext;
9+
10+
constructor(init?: Partial<LoggingInterceptorContext>) {
11+
Object.assign(this, init);
12+
}
13+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { ExecutionContext } from '@nestjs/common';
2+
3+
export class RequestCpuTimeInterceptorContext {
4+
apiFunction: string = '';
5+
durationMs: number = 0;
6+
context!: ExecutionContext;
7+
8+
constructor(init?: Partial<RequestCpuTimeInterceptorContext>) {
9+
Object.assign(this, init);
10+
}
11+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
export * from './entities';
12
export * from './log.requests.interceptor';
23
export * from './logging.interceptor';
34
export * from './request.cpu.time.interceptor';

packages/monitoring/src/interceptors/logging.interceptor.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ import { Observable, throwError } from "rxjs";
33
import { catchError, tap } from "rxjs/operators";
44
import { MetricsService } from "../metrics";
55
import { PerformanceProfiler } from "../profilers/performance.profiler";
6+
import { LoggingInterceptorContext } from "./entities/logging.interceptor.context";
67

78
@Injectable()
89
export class LoggingInterceptor implements NestInterceptor {
910
constructor(
1011
private readonly metricsService: MetricsService,
11-
private readonly onRequest?: (apiFunction: string, durationMs: number, context: ExecutionContext) => void,
12+
private readonly onRequest?: (context: LoggingInterceptorContext) => void,
1213
) { }
1314

1415
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
@@ -41,7 +42,13 @@ export class LoggingInterceptor implements NestInterceptor {
4142
this.metricsService.setApiCall(apiFunction, origin, res.statusCode, profiler.duration);
4243

4344
if (this.onRequest) {
44-
this.onRequest(apiFunction, profiler.duration, context);
45+
this.onRequest(new LoggingInterceptorContext({
46+
apiFunction,
47+
durationMs: profiler.duration,
48+
origin,
49+
statusCode: res.statusCode,
50+
context,
51+
}));
4552
}
4653
}),
4754
catchError(err => {
@@ -51,7 +58,13 @@ export class LoggingInterceptor implements NestInterceptor {
5158
this.metricsService.setApiCall(apiFunction, origin, statusCode, profiler.duration);
5259

5360
if (this.onRequest) {
54-
this.onRequest(apiFunction, profiler.duration, context);
61+
this.onRequest(new LoggingInterceptorContext({
62+
apiFunction,
63+
durationMs: profiler.duration,
64+
origin,
65+
statusCode,
66+
context,
67+
}));
5568
}
5669

5770
return throwError(() => err);

packages/monitoring/src/interceptors/request.cpu.time.interceptor.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ import { Observable, throwError } from "rxjs";
33
import { catchError, tap } from 'rxjs/operators';
44
import { MetricsService } from '../metrics';
55
import { CpuProfiler } from "../profilers/cpu.profiler";
6+
import { RequestCpuTimeInterceptorContext } from "./entities";
67

78
@Injectable()
89
export class RequestCpuTimeInterceptor implements NestInterceptor {
910
constructor(
1011
private readonly metricsService: MetricsService,
11-
private readonly onRequest?: (apiFunction: string, durationMs: number, context: ExecutionContext) => void,
12+
private readonly onRequest?: (context: RequestCpuTimeInterceptorContext) => void,
1213
) { }
1314

1415
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
@@ -31,7 +32,11 @@ export class RequestCpuTimeInterceptor implements NestInterceptor {
3132
this.metricsService.setApiCpuTime(apiFunction, duration);
3233

3334
if (this.onRequest) {
34-
this.onRequest(apiFunction, duration, context);
35+
this.onRequest(new RequestCpuTimeInterceptorContext({
36+
apiFunction,
37+
durationMs: duration,
38+
context,
39+
}));
3540
}
3641

3742
if (!request.res.headersSent) {
@@ -43,7 +48,11 @@ export class RequestCpuTimeInterceptor implements NestInterceptor {
4348
this.metricsService.setApiCpuTime(apiFunction, duration);
4449

4550
if (this.onRequest) {
46-
this.onRequest(apiFunction, duration, context);
51+
this.onRequest(new RequestCpuTimeInterceptorContext({
52+
apiFunction,
53+
durationMs: duration,
54+
context,
55+
}));
4756
}
4857

4958
if (!request.res.headersSent) {

0 commit comments

Comments
 (0)