Skip to content

Instantly share code, notes, and snippets.

@8naf
Created August 8, 2023 13:38
Show Gist options
  • Save 8naf/945e8da5a3a60928c5acb55ddb05dbb2 to your computer and use it in GitHub Desktop.
Save 8naf/945e8da5a3a60928c5acb55ddb05dbb2 to your computer and use it in GitHub Desktop.
Map status from GRPC to HTTP for NestJS
import { status as GrpcStatus } from '@grpc/grpc-js';
import { HttpStatus } from '@nestjs/common';
// REF: https://cloud.google.com/apis/design/errors#handling_errors
const httpCodeMapper = {
[GrpcStatus.OK]: HttpStatus.OK,
[GrpcStatus.INVALID_ARGUMENT]: HttpStatus.BAD_REQUEST,
[GrpcStatus.FAILED_PRECONDITION]: HttpStatus.BAD_REQUEST,
[GrpcStatus.OUT_OF_RANGE]: HttpStatus.BAD_REQUEST,
[GrpcStatus.UNAUTHENTICATED]: HttpStatus.UNAUTHORIZED,
[GrpcStatus.PERMISSION_DENIED]: HttpStatus.FORBIDDEN,
[GrpcStatus.NOT_FOUND]: HttpStatus.NOT_FOUND,
[GrpcStatus.ABORTED]: HttpStatus.CONFLICT,
[GrpcStatus.ALREADY_EXISTS]: HttpStatus.CONFLICT,
[GrpcStatus.RESOURCE_EXHAUSTED]: HttpStatus.TOO_MANY_REQUESTS,
[GrpcStatus.CANCELLED]: 499, //CLIENT_CLOSED_REQUEST
[GrpcStatus.DATA_LOSS]: HttpStatus.INTERNAL_SERVER_ERROR,
[GrpcStatus.UNKNOWN]: HttpStatus.INTERNAL_SERVER_ERROR,
[GrpcStatus.INTERNAL]: HttpStatus.INTERNAL_SERVER_ERROR,
[GrpcStatus.UNIMPLEMENTED]: HttpStatus.NOT_IMPLEMENTED,
[GrpcStatus.UNAVAILABLE]: HttpStatus.INTERNAL_SERVER_ERROR,
[GrpcStatus.DEADLINE_EXCEEDED]: HttpStatus.INTERNAL_SERVER_ERROR,
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment