github.com/profzone/eden-framework@v1.0.10/pkg/courier/transport_grpc/errors.go (about)

     1  package transport_grpc
     2  
     3  import (
     4  	"net/http"
     5  
     6  	"google.golang.org/grpc/codes"
     7  )
     8  
     9  var (
    10  	httpCodes = map[codes.Code]int{
    11  		codes.OK:                 http.StatusOK,
    12  		codes.Canceled:           http.StatusRequestTimeout,
    13  		codes.Unknown:            http.StatusInternalServerError,
    14  		codes.InvalidArgument:    http.StatusBadRequest,
    15  		codes.DeadlineExceeded:   http.StatusRequestTimeout,
    16  		codes.NotFound:           http.StatusNotFound,
    17  		codes.AlreadyExists:      http.StatusConflict,
    18  		codes.PermissionDenied:   http.StatusForbidden,
    19  		codes.Unauthenticated:    http.StatusUnauthorized,
    20  		codes.ResourceExhausted:  http.StatusForbidden,
    21  		codes.FailedPrecondition: http.StatusPreconditionFailed,
    22  		codes.Aborted:            http.StatusConflict,
    23  		codes.OutOfRange:         http.StatusBadRequest,
    24  		codes.Unimplemented:      http.StatusNotImplemented,
    25  		codes.Internal:           http.StatusInternalServerError,
    26  		codes.Unavailable:        http.StatusServiceUnavailable,
    27  		codes.DataLoss:           http.StatusInternalServerError,
    28  	}
    29  	statusCodes = map[int]codes.Code{
    30  		http.StatusOK:                  codes.OK,
    31  		http.StatusRequestTimeout:      codes.DeadlineExceeded,
    32  		http.StatusInternalServerError: codes.Internal,
    33  		http.StatusBadRequest:          codes.InvalidArgument,
    34  		http.StatusNotFound:            codes.NotFound,
    35  		http.StatusConflict:            codes.AlreadyExists,
    36  		http.StatusForbidden:           codes.PermissionDenied,
    37  		http.StatusUnauthorized:        codes.Unauthenticated,
    38  		http.StatusPreconditionFailed:  codes.FailedPrecondition,
    39  		http.StatusNotImplemented:      codes.Unimplemented,
    40  		http.StatusServiceUnavailable:  codes.Unavailable,
    41  	}
    42  )
    43  
    44  func HTTPStatusFromCode(code codes.Code) int {
    45  	if status, ok := httpCodes[code]; ok {
    46  		return status
    47  	}
    48  	return http.StatusInternalServerError
    49  }
    50  
    51  func CodeFromHTTPStatus(status int) codes.Code {
    52  	if code, ok := statusCodes[status]; ok {
    53  		return code
    54  	}
    55  	return codes.Unknown
    56  }