You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.3 KiB
96 lines
2.3 KiB
package status |
|
|
|
import ( |
|
"google.golang.org/grpc/codes" |
|
"net/http" |
|
) |
|
|
|
const ( |
|
ClientClosed = 499 |
|
) |
|
|
|
type Converter interface { |
|
ToGRPCCode(code int) codes.Code |
|
FromGRPCCode(code codes.Code) int |
|
} |
|
|
|
var DefaultConverter Converter = statusConverter{} |
|
|
|
type statusConverter struct { |
|
} |
|
|
|
func (s statusConverter) ToGRPCCode(code int) codes.Code { |
|
switch code { |
|
case http.StatusOK: |
|
return codes.OK |
|
case http.StatusBadRequest: |
|
return codes.InvalidArgument |
|
case http.StatusUnauthorized: |
|
return codes.Unauthenticated |
|
case http.StatusForbidden: |
|
return codes.PermissionDenied |
|
case http.StatusNotFound: |
|
return codes.NotFound |
|
case http.StatusConflict: |
|
return codes.Aborted |
|
case http.StatusTooManyRequests: |
|
return codes.ResourceExhausted |
|
case http.StatusInternalServerError: |
|
return codes.Internal |
|
case http.StatusNotImplemented: |
|
return codes.Unimplemented |
|
case http.StatusServiceUnavailable: |
|
return codes.Unavailable |
|
case http.StatusGatewayTimeout: |
|
return codes.DeadlineExceeded |
|
case ClientClosed: |
|
return codes.Canceled |
|
} |
|
return codes.Unknown |
|
} |
|
|
|
func (s statusConverter) FromGRPCCode(code codes.Code) int { |
|
switch code { |
|
case codes.OK: |
|
return http.StatusOK |
|
case codes.Canceled: |
|
return ClientClosed |
|
case codes.Unknown: |
|
return http.StatusInternalServerError |
|
case codes.InvalidArgument: |
|
return http.StatusBadRequest |
|
case codes.DeadlineExceeded: |
|
return http.StatusGatewayTimeout |
|
case codes.NotFound: |
|
return http.StatusNotFound |
|
case codes.AlreadyExists: |
|
return http.StatusConflict |
|
case codes.PermissionDenied: |
|
return http.StatusForbidden |
|
case codes.Unauthenticated: |
|
return http.StatusUnauthorized |
|
case codes.ResourceExhausted: |
|
return http.StatusTooManyRequests |
|
case codes.FailedPrecondition: |
|
return http.StatusBadRequest |
|
case codes.Aborted: |
|
return http.StatusConflict |
|
case codes.OutOfRange: |
|
return http.StatusBadRequest |
|
case codes.Unimplemented: |
|
return http.StatusNotImplemented |
|
case codes.Internal: |
|
return http.StatusInternalServerError |
|
case codes.Unavailable: |
|
return http.StatusServiceUnavailable |
|
case codes.DataLoss: |
|
return http.StatusInternalServerError |
|
} |
|
return http.StatusInternalServerError |
|
} |
|
func ToGRPCCode(code int) codes.Code { |
|
return DefaultConverter.ToGRPCCode(code) |
|
} |
|
func FromGRPCCode(code codes.Code) int { |
|
return DefaultConverter.FromGRPCCode(code) |
|
}
|
|
|