Implement book_offers in new RPC framework (#542)

Fixes #547
This commit is contained in:
cyan317
2023-03-21 09:12:25 +00:00
committed by GitHub
parent b25ac5d707
commit edd2e9dd4b
17 changed files with 1788 additions and 37 deletions

View File

@@ -22,6 +22,7 @@
#include <rpc/common/Validators.h>
#include <boost/json/value.hpp>
#include <fmt/core.h>
#include <charconv>
#include <string_view>
@@ -200,4 +201,27 @@ CustomValidator CurrencyValidator = CustomValidator{
return MaybeError{};
}};
CustomValidator IssuerValidator = CustomValidator{
[](boost::json::value const& value, std::string_view key) -> MaybeError {
if (!value.is_string())
return Error{RPC::Status{
RPC::RippledError::rpcINVALID_PARAMS,
std::string(key) + "NotString"}};
ripple::AccountID issuer;
if (!ripple::to_issuer(issuer, value.as_string().c_str()))
return Error{RPC::Status{
// TODO: need to align with the error
RPC::RippledError::rpcINVALID_PARAMS,
fmt::format("Invalid field '{}', bad issuer.", key)}};
if (issuer == ripple::noAccount())
return Error{RPC::Status{
RPC::RippledError::rpcINVALID_PARAMS,
fmt::format(
"Invalid field '{}', bad issuer account "
"one.",
key)}};
return MaybeError{};
}};
} // namespace RPCng::validation