Unsubscribe (#595)

Fixes #597
This commit is contained in:
cyan317
2023-04-20 08:54:20 +01:00
committed by GitHub
parent 0bc84fefbf
commit 93e2ac529d
8 changed files with 875 additions and 80 deletions

View File

@@ -234,36 +234,4 @@ CustomValidator SubscribeAccountsValidator =
}
return MaybeError{};
}};
CustomValidator SubscribeBooksValidator =
CustomValidator{[](boost::json::value const& value, std::string_view key) -> MaybeError {
if (!value.is_array())
return Error{RPC::Status{RPC::RippledError::rpcINVALID_PARAMS, std::string(key) + "NotArray"}};
for (auto const& book : value.as_array())
{
if (!book.is_object())
return Error{RPC::Status{RPC::RippledError::rpcINVALID_PARAMS, std::string(key) + "ItemNotObject"}};
if (book.as_object().contains("both") && !book.as_object().at("both").is_bool())
{
return Error{RPC::Status{RPC::RippledError::rpcINVALID_PARAMS, "bothNotBool"}};
}
if (book.as_object().contains("snapshot") && !book.as_object().at("snapshot").is_bool())
{
return Error{RPC::Status{RPC::RippledError::rpcINVALID_PARAMS, "snapshotNotBool"}};
}
if (book.as_object().contains("taker"))
{
if (auto const err = AccountValidator.verify(book.as_object(), "taker"); !err)
return err;
}
auto const parsedBook = RPC::parseBook(book.as_object());
if (auto const status = std::get_if<RPC::Status>(&parsedBook))
return Error(*status);
}
return MaybeError{};
}};
} // namespace RPCng::validation