address comments

This commit is contained in:
Nathan Nichols
2021-05-13 09:06:20 -05:00
parent cabd9e0c45
commit db92f420d9
3 changed files with 34 additions and 50 deletions

View File

@@ -237,24 +237,6 @@ doBookOffers(
return response;
}
boost::optional<ripple::AccountID> takerID;
if (request.contains("taker"))
{
if (!request.at("taker").is_string())
{
response["error"] = "taker should be string";
return response;
}
takerID = ripple::parseBase58<ripple::AccountID>(
request.at("taker").as_string().c_str());
if (!takerID)
{
response["error"] = "Invalid taker";
return response;
}
}
if (pay_currency == get_currency && pay_issuer == get_issuer)
{
response["error"] = "Bad market";
@@ -271,6 +253,24 @@ doBookOffers(
request.at("limit").kind() == boost::json::kind::int64)
limit = request.at("limit").as_int64();
std::optional<ripple::AccountID> takerID = {};
if (request.contains("taker"))
{
if (!request.at("taker").is_string())
{
response["error"] = "Taker account must be string";
return response;
}
takerID =
accountFromStringStrict(request.at("taker").as_string().c_str());
if (!takerID)
{
response["error"] = "Invalid taker account";
return response;
}
}
std::optional<ripple::uint256> cursor;
if (request.contains("cursor"))
{
@@ -293,29 +293,23 @@ doBookOffers(
boost::json::array& jsonOffers = response.at("offers").as_array();
start = std::chrono::system_clock::now();
std::transform(
std::move_iterator(offers.begin()),
std::move_iterator(offers.end()),
std::back_inserter(jsonOffers),
[](auto&& obj) {
try
{
ripple::SerialIter it{obj.blob.data(), obj.blob.size()};
ripple::SLE offer{it, obj.key};
ripple::uint256 bookDir = offer.getFieldH256(ripple::sfBookDirectory);
for (auto const& obj : offers)
{
if (jsonOffers.size() == limit)
break;
boost::json::object offerJson = getJson(offer);
offerJson["quality"] = ripple::amountFromQuality(getQuality(bookDir)).getText();
return offerJson;
}
catch (std::exception const& e)
{
boost::json::object empty;
empty["missing_key"] = ripple::strHex(obj.key);
empty["data"] = ripple::strHex(obj.blob);
return empty;
}
});
try
{
ripple::SerialIter it{obj.blob.data(), obj.blob.size()};
ripple::SLE offer{it, obj.key};
ripple::uint256 bookDir = offer.getFieldH256(ripple::sfBookDirectory);
boost::json::object offerJson = getJson(offer);
offerJson["quality"] = ripple::amountFromQuality(getQuality(bookDir)).getText();
jsonOffers.push_back(offerJson);
}
catch (std::exception const& e) {}
}
end = std::chrono::system_clock::now();

View File

@@ -604,12 +604,7 @@ CassandraBackend::fetchBookOffers(
for (size_t i = 0; i < objs.size(); ++i)
{
if (objs[i].size() != 0)
{
if (results.size() == limit)
return {results, keys[i], warning};
results.push_back({keys[i], objs[i]});
}
}
return {results, {}, warning};

View File

@@ -478,12 +478,7 @@ PostgresBackend::fetchBookOffers(
for (auto i = 0; i < ledgerEntries.size(); ++i)
{
if(ledgerEntries[i].size() != 0)
{
if (objects.size() == limit)
return {objects, keys[i], warning};
objects.push_back(LedgerObject{keys[i], ledgerEntries[i]});
}
}
return {objects, {}, warning};