allow user to specify no peer in doAccountLines (#193)

This commit is contained in:
Nathan Nichols
2022-06-23 13:18:44 -04:00
committed by GitHub
parent 5f5648470a
commit 59d7d1bc49
3 changed files with 36 additions and 3 deletions

View File

@@ -221,6 +221,32 @@ getAccount(
return Status{Error::rpcINVALID_PARAMS, field.to_string() + "Malformed"};
}
Status
getOptionalAccount(
boost::json::object const& request,
std::optional<ripple::AccountID>& account,
boost::string_view const& field)
{
if (!request.contains(field))
{
account = {};
return {};
}
if (!request.at(field).is_string())
return Status{
Error::rpcINVALID_PARAMS, field.to_string() + "NotString"};
if (auto a = accountFromStringStrict(request.at(field).as_string().c_str());
a)
{
account = a.value();
return {};
}
return Status{Error::rpcINVALID_PARAMS, field.to_string() + "Malformed"};
}
Status
getAccount(boost::json::object const& request, ripple::AccountID& accountId)
{

View File

@@ -238,6 +238,12 @@ getAccount(
ripple::AccountID& destAccount,
boost::string_view const& field);
Status
getOptionalAccount(
boost::json::object const& request,
std::optional<ripple::AccountID>& account,
boost::string_view const& field);
Status
getTaker(boost::json::object const& request, ripple::AccountID& takerID);

View File

@@ -39,7 +39,7 @@ addLine(
auto lineQualityIn = viewLowest ? lowQualityIn : highQualityIn;
auto lineQualityOut = viewLowest ? lowQualityOut : highQualityOut;
if (peerAccount and peerAccount != lineAccountIDPeer)
if (peerAccount && peerAccount != lineAccountIDPeer)
return;
if (!viewLowest)
@@ -109,8 +109,9 @@ doAccountLines(Context const& context)
if (!rawAcct)
return Status{Error::rpcACT_NOT_FOUND, "accountNotFound"};
ripple::AccountID peerAccount;
if (auto const status = getAccount(request, peerAccount, JS(peer)); status)
std::optional<ripple::AccountID> peerAccount;
if (auto const status = getOptionalAccount(request, peerAccount, JS(peer));
status)
return status;
std::uint32_t limit;