response.interceptor.ts 714 B

123456789101112131415161718192021222324252627282930
  1. import {
  2. CallHandler,
  3. ExecutionContext,
  4. Injectable,
  5. NestInterceptor,
  6. StreamableFile,
  7. } from '@nestjs/common';
  8. import { map } from 'rxjs/operators';
  9. import { ApiResponse } from '../interfaces/api-response.interface';
  10. @Injectable()
  11. export class ResponseInterceptor implements NestInterceptor {
  12. intercept(_context: ExecutionContext, next: CallHandler) {
  13. return next.handle().pipe(
  14. map((data): ApiResponse<unknown> | StreamableFile => {
  15. if (data instanceof StreamableFile) {
  16. return data;
  17. }
  18. return {
  19. error: '',
  20. status: 1,
  21. code: 'OK',
  22. data,
  23. timestamp: new Date().toISOString(),
  24. };
  25. }),
  26. );
  27. }
  28. }