@webilix/nestjs-helper
Version:
Helper library for NestJS
41 lines (30 loc) • 1.29 kB
text/typescript
import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common';
import { Observable } from 'rxjs';
import { Helper } from '@webilix/helper-library';
import { NormalizerService } from './normalizer.service';
()
export class NormalizerInterceptor implements NestInterceptor {
constructor(private readonly normalizerService: NormalizerService) {}
private normalize(body: { [key: string]: any }): { [key: string]: any } {
Object.keys(body).forEach((key: string) => {
const value: any = body[key];
if (value === null) return;
switch (true) {
case Helper.IS.array(value) || Helper.IS.object(value):
this.normalize(value);
break;
case Helper.IS.string(value):
body[key] = this.normalizerService.normalize(value);
break;
}
});
return body;
}
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
const http = context.switchToHttp();
const req = http.getRequest();
const body: { [key: string]: any } = req.body;
if (Helper.IS.object(body)) this.normalize(body);
return next.handle();
}
}