mirror of
https://github.com/XRPLF/clio.git
synced 2026-04-29 15:37:53 +00:00
@@ -42,20 +42,20 @@ namespace rpc {
|
||||
WarningInfo const&
|
||||
getWarningInfo(WarningCode code)
|
||||
{
|
||||
constexpr static WarningInfo infos[]{
|
||||
{warnUNKNOWN, "Unknown warning"},
|
||||
{warnRPC_CLIO,
|
||||
static constexpr WarningInfo kINFOS[]{
|
||||
{WarnUnknown, "Unknown warning"},
|
||||
{WarnRpcClio,
|
||||
"This is a clio server. clio only serves validated data. If you want to talk to rippled, include "
|
||||
"'ledger_index':'current' in your request"},
|
||||
{warnRPC_OUTDATED, "This server may be out of date"},
|
||||
{warnRPC_RATE_LIMIT, "You are about to be rate limited"},
|
||||
{warnRPC_DEPRECATED,
|
||||
{WarnRpcOutdated, "This server may be out of date"},
|
||||
{WarnRpcRateLimit, "You are about to be rate limited"},
|
||||
{WarnRpcDeprecated,
|
||||
"Some fields from your request are deprecated. Please check the documentation at "
|
||||
"https://xrpl.org/docs/references/http-websocket-apis/ and update your request."}
|
||||
};
|
||||
|
||||
auto matchByCode = [code](auto const& info) { return info.code == code; };
|
||||
if (auto it = std::ranges::find_if(infos, matchByCode); it != end(infos))
|
||||
if (auto it = ranges::find_if(kINFOS, matchByCode); it != end(kINFOS))
|
||||
return *it;
|
||||
|
||||
throw(out_of_range("Invalid WarningCode"));
|
||||
@@ -74,44 +74,43 @@ makeWarning(WarningCode code)
|
||||
ClioErrorInfo const&
|
||||
getErrorInfo(ClioError code)
|
||||
{
|
||||
constexpr static ClioErrorInfo infos[]{
|
||||
{.code = ClioError::rpcMALFORMED_CURRENCY, .error = "malformedCurrency", .message = "Malformed currency."},
|
||||
{.code = ClioError::rpcMALFORMED_REQUEST, .error = "malformedRequest", .message = "Malformed request."},
|
||||
{.code = ClioError::rpcMALFORMED_OWNER, .error = "malformedOwner", .message = "Malformed owner."},
|
||||
{.code = ClioError::rpcMALFORMED_ADDRESS, .error = "malformedAddress", .message = "Malformed address."},
|
||||
{.code = ClioError::rpcINVALID_HOT_WALLET, .error = "invalidHotWallet", .message = "Invalid hot wallet."},
|
||||
{.code = ClioError::rpcUNKNOWN_OPTION, .error = "unknownOption", .message = "Unknown option."},
|
||||
{.code = ClioError::rpcFIELD_NOT_FOUND_TRANSACTION,
|
||||
constexpr static ClioErrorInfo kINFOS[]{
|
||||
{.code = ClioError::RpcMalformedCurrency, .error = "malformedCurrency", .message = "Malformed currency."},
|
||||
{.code = ClioError::RpcMalformedRequest, .error = "malformedRequest", .message = "Malformed request."},
|
||||
{.code = ClioError::RpcMalformedOwner, .error = "malformedOwner", .message = "Malformed owner."},
|
||||
{.code = ClioError::RpcMalformedAddress, .error = "malformedAddress", .message = "Malformed address."},
|
||||
{.code = ClioError::RpcInvalidHotWallet, .error = "invalidHotWallet", .message = "Invalid hot wallet."},
|
||||
{.code = ClioError::RpcUnknownOption, .error = "unknownOption", .message = "Unknown option."},
|
||||
{.code = ClioError::RpcFieldNotFoundTransaction,
|
||||
.error = "fieldNotFoundTransaction",
|
||||
.message = "Missing field."},
|
||||
{.code = ClioError::rpcMALFORMED_ORACLE_DOCUMENT_ID,
|
||||
{.code = ClioError::RpcMalformedOracleDocumentId,
|
||||
.error = "malformedDocumentID",
|
||||
.message = "Malformed oracle_document_id."},
|
||||
{.code = ClioError::rpcMALFORMED_AUTHORIZED_CREDENTIALS,
|
||||
{.code = ClioError::RpcMalformedAuthorizedCredentials,
|
||||
.error = "malformedAuthorizedCredentials",
|
||||
.message = "Malformed authorized credentials."},
|
||||
// special system errors
|
||||
{.code = ClioError::rpcINVALID_API_VERSION, .error = JS(invalid_API_version), .message = "Invalid API version."
|
||||
},
|
||||
{.code = ClioError::rpcCOMMAND_IS_MISSING,
|
||||
{.code = ClioError::RpcInvalidApiVersion, .error = JS(invalid_API_version), .message = "Invalid API version."},
|
||||
{.code = ClioError::RpcCommandIsMissing,
|
||||
.error = JS(missingCommand),
|
||||
.message = "Method is not specified or is not a string."},
|
||||
{.code = ClioError::rpcCOMMAND_NOT_STRING, .error = "commandNotString", .message = "Method is not a string."},
|
||||
{.code = ClioError::rpcCOMMAND_IS_EMPTY, .error = "emptyCommand", .message = "Method is an empty string."},
|
||||
{.code = ClioError::rpcPARAMS_UNPARSEABLE,
|
||||
{.code = ClioError::RpcCommandNotString, .error = "commandNotString", .message = "Method is not a string."},
|
||||
{.code = ClioError::RpcCommandIsEmpty, .error = "emptyCommand", .message = "Method is an empty string."},
|
||||
{.code = ClioError::RpcParamsUnparseable,
|
||||
.error = "paramsUnparseable",
|
||||
.message = "Params must be an array holding exactly one object."},
|
||||
// etl related errors
|
||||
{.code = ClioError::etlCONNECTION_ERROR, .error = "connectionError", .message = "Couldn't connect to rippled."},
|
||||
{.code = ClioError::etlREQUEST_ERROR, .error = "requestError", .message = "Error sending request to rippled."},
|
||||
{.code = ClioError::etlREQUEST_TIMEOUT, .error = "timeout", .message = "Request to rippled timed out."},
|
||||
{.code = ClioError::etlINVALID_RESPONSE,
|
||||
{.code = ClioError::EtlConnectionError, .error = "connectionError", .message = "Couldn't connect to rippled."},
|
||||
{.code = ClioError::EtlRequestError, .error = "requestError", .message = "Error sending request to rippled."},
|
||||
{.code = ClioError::EtlRequestTimeout, .error = "timeout", .message = "Request to rippled timed out."},
|
||||
{.code = ClioError::EtlInvalidResponse,
|
||||
.error = "invalidResponse",
|
||||
.message = "Rippled returned an invalid response."}
|
||||
};
|
||||
|
||||
auto matchByCode = [code](auto const& info) { return info.code == code; };
|
||||
if (auto it = std::ranges::find_if(infos, matchByCode); it != end(infos))
|
||||
if (auto it = ranges::find_if(kINFOS, matchByCode); it != end(kINFOS))
|
||||
return *it;
|
||||
|
||||
throw(out_of_range("Invalid error code"));
|
||||
|
||||
Reference in New Issue
Block a user