From db92f420d97a895cc4ae4f217ec60559d2e7ac86 Mon Sep 17 00:00:00 2001 From: Nathan Nichols Date: Thu, 13 May 2021 09:06:20 -0500 Subject: [PATCH] address comments --- handlers/BookOffers.cpp | 74 ++++++++++++++++------------------ reporting/CassandraBackend.cpp | 5 --- reporting/PostgresBackend.cpp | 5 --- 3 files changed, 34 insertions(+), 50 deletions(-) diff --git a/handlers/BookOffers.cpp b/handlers/BookOffers.cpp index cef8687f..d0e37ddb 100644 --- a/handlers/BookOffers.cpp +++ b/handlers/BookOffers.cpp @@ -237,24 +237,6 @@ doBookOffers( return response; } - boost::optional takerID; - if (request.contains("taker")) - { - if (!request.at("taker").is_string()) - { - response["error"] = "taker should be string"; - return response; - } - - takerID = ripple::parseBase58( - 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 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 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(); diff --git a/reporting/CassandraBackend.cpp b/reporting/CassandraBackend.cpp index 2cdfa16d..94f596c1 100644 --- a/reporting/CassandraBackend.cpp +++ b/reporting/CassandraBackend.cpp @@ -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}; diff --git a/reporting/PostgresBackend.cpp b/reporting/PostgresBackend.cpp index 08dd94e8..fc23b307 100644 --- a/reporting/PostgresBackend.cpp +++ b/reporting/PostgresBackend.cpp @@ -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};