in src/dubbo/protocol/triple/status.py [0:0]
def from_http_code(cls, code: Union[int, HttpStatus]):
http_status = HttpStatus.from_code(code) if isinstance(code, int) else code
rpc_code = GRpcCode.UNKNOWN
if HttpStatus.is_1xx(http_status) or http_status in [
HttpStatus.BAD_REQUEST,
HttpStatus.REQUEST_HEADER_FIELDS_TOO_LARGE,
]:
rpc_code = GRpcCode.INTERNAL
elif http_status == HttpStatus.UNAUTHORIZED:
rpc_code = GRpcCode.UNAUTHENTICATED
elif http_status == HttpStatus.FORBIDDEN:
rpc_code = GRpcCode.PERMISSION_DENIED
elif http_status == HttpStatus.NOT_FOUND:
rpc_code = GRpcCode.NOT_FOUND
elif http_status in [
HttpStatus.BAD_GATEWAY,
HttpStatus.TOO_MANY_REQUESTS,
HttpStatus.SERVICE_UNAVAILABLE,
HttpStatus.GATEWAY_TIMEOUT,
]:
rpc_code = GRpcCode.UNAVAILABLE
return cls(rpc_code)