Lines
100 %
Functions
#include "source/common/grpc/status.h"
namespace Envoy {
namespace Grpc {
Status::GrpcStatus Utility::httpToGrpcStatus(uint64_t http_response_status) {
// From
// https://github.com/grpc/grpc/blob/master/doc/http-grpc-status-mapping.md.
switch (http_response_status) {
case 400:
return Status::WellKnownGrpcStatus::Internal;
case 401:
return Status::WellKnownGrpcStatus::Unauthenticated;
case 403:
return Status::WellKnownGrpcStatus::PermissionDenied;
case 404:
return Status::WellKnownGrpcStatus::Unimplemented;
case 429:
case 502:
case 503:
case 504:
return Status::WellKnownGrpcStatus::Unavailable;
default:
return Status::WellKnownGrpcStatus::Unknown;
}
uint64_t Utility::grpcToHttpStatus(Status::GrpcStatus grpc_status) {
// From https://cloud.google.com/apis/design/errors#handling_errors.
switch (grpc_status) {
case Status::WellKnownGrpcStatus::Ok:
return 200;
case Status::WellKnownGrpcStatus::Canceled:
// Client closed request.
return 499;
case Status::WellKnownGrpcStatus::Unknown:
// Internal server error.
return 500;
case Status::WellKnownGrpcStatus::InvalidArgument:
// Bad request.
return 400;
case Status::WellKnownGrpcStatus::DeadlineExceeded:
// Gateway Time-out.
return 504;
case Status::WellKnownGrpcStatus::NotFound:
// Not found.
return 404;
case Status::WellKnownGrpcStatus::AlreadyExists:
// Conflict.
return 409;
case Status::WellKnownGrpcStatus::PermissionDenied:
// Forbidden.
return 403;
case Status::WellKnownGrpcStatus::ResourceExhausted:
// Too many requests.
return 429;
case Status::WellKnownGrpcStatus::FailedPrecondition:
case Status::WellKnownGrpcStatus::Aborted:
case Status::WellKnownGrpcStatus::OutOfRange:
case Status::WellKnownGrpcStatus::Unimplemented:
// Not implemented.
return 501;
case Status::WellKnownGrpcStatus::Internal:
case Status::WellKnownGrpcStatus::Unavailable:
// Service unavailable.
return 503;
case Status::WellKnownGrpcStatus::DataLoss:
case Status::WellKnownGrpcStatus::Unauthenticated:
// Unauthorized.
return 401;
case Status::WellKnownGrpcStatus::InvalidCode:
std::string Utility::grpcStatusToString(Status::GrpcStatus grpc_status) {
return "OK";
return "Canceled";
return "Unknown";
return "InvalidArgument";
return "DeadlineExceeded";
return "NotFound";
return "AlreadyExists";
return "PermissionDenied";
return "ResourceExhausted";
return "FailedPrecondition";
return "Aborted";
return "OutOfRange";
return "Unimplemented";
return "Internal";
return "Unavailable";
return "DataLoss";
return "Unauthenticated";
return "InvalidCode";
} // namespace Grpc
} // namespace Envoy