mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-04 20:05:51 +00:00
@@ -321,9 +321,6 @@ buildResponse(Context const& ctx)
|
||||
if (!res)
|
||||
return Status{RippledError::rpcFAILED_TO_FORWARD};
|
||||
|
||||
if (res->contains("result") && res->at("result").is_object())
|
||||
return res->at("result").as_object();
|
||||
|
||||
return *res;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,17 +50,12 @@ doAccountInfo(Context const& context)
|
||||
if (!accountID)
|
||||
return Status{RippledError::rpcACT_MALFORMED};
|
||||
|
||||
assert(accountID.has_value());
|
||||
|
||||
auto key = ripple::keylet::account(accountID.value());
|
||||
|
||||
std::optional<std::vector<unsigned char>> dbResponse =
|
||||
context.backend->fetchLedgerObject(key.key, lgrInfo.seq, context.yield);
|
||||
|
||||
if (!dbResponse)
|
||||
{
|
||||
return Status{RippledError::rpcACT_NOT_FOUND};
|
||||
}
|
||||
|
||||
ripple::STLedgerEntry sle{
|
||||
ripple::SerialIter{dbResponse->data(), dbResponse->size()}, key.key};
|
||||
@@ -68,12 +63,6 @@ doAccountInfo(Context const& context)
|
||||
if (!key.check(sle))
|
||||
return Status{RippledError::rpcDB_DESERIALIZATION};
|
||||
|
||||
// if (!binary)
|
||||
// response[JS(account_data)] = getJson(sle);
|
||||
// else
|
||||
// response[JS(account_data)] = ripple::strHex(*dbResponse);
|
||||
// response[JS(db_time)] = time;
|
||||
|
||||
response[JS(account_data)] = toJson(sle);
|
||||
response[JS(ledger_hash)] = ripple::strHex(lgrInfo.hash);
|
||||
response[JS(ledger_index)] = lgrInfo.seq;
|
||||
|
||||
@@ -417,9 +417,7 @@ handle_request(
|
||||
boost::json::serialize(
|
||||
RPC::makeError(RPC::RippledError::rpcBAD_SYNTAX))));
|
||||
|
||||
boost::json::object response{{"result", boost::json::object{}}};
|
||||
boost::json::object& result = response["result"].as_object();
|
||||
|
||||
boost::json::object response;
|
||||
auto start = std::chrono::system_clock::now();
|
||||
auto v = RPC::buildResponse(*context);
|
||||
auto end = std::chrono::system_clock::now();
|
||||
@@ -432,7 +430,7 @@ handle_request(
|
||||
counters.rpcErrored(context->method);
|
||||
auto error = RPC::makeError(*status);
|
||||
error["request"] = request;
|
||||
result = error;
|
||||
response["result"] = error;
|
||||
|
||||
perfLog.debug()
|
||||
<< http->tag() << "Encountered error: " << responseStr;
|
||||
@@ -443,10 +441,15 @@ handle_request(
|
||||
// requests as successful.
|
||||
|
||||
counters.rpcComplete(context->method, us);
|
||||
result = std::get<boost::json::object>(v);
|
||||
|
||||
auto result = std::get<boost::json::object>(v);
|
||||
if (result.contains("result") && result.at("result").is_object())
|
||||
result = result.at("result").as_object();
|
||||
|
||||
if (!result.contains("error"))
|
||||
result["status"] = "success";
|
||||
|
||||
response["result"] = result;
|
||||
}
|
||||
|
||||
boost::json::array warnings;
|
||||
|
||||
@@ -39,7 +39,6 @@ getDefaultWsResponse(boost::json::value const& id)
|
||||
if (!id.is_null())
|
||||
defaultResp["id"] = id;
|
||||
|
||||
defaultResp["result"] = boost::json::object_kind;
|
||||
defaultResp["status"] = "success";
|
||||
defaultResp["type"] = "response";
|
||||
|
||||
@@ -348,7 +347,18 @@ public:
|
||||
{
|
||||
counters_.rpcComplete(context->method, us);
|
||||
|
||||
response["result"] = std::get<boost::json::object>(v);
|
||||
auto const& result = std::get<boost::json::object>(v);
|
||||
auto const isForwarded = result.contains("forwarded") &&
|
||||
result.at("forwarded").is_bool() &&
|
||||
result.at("forwarded").as_bool();
|
||||
|
||||
// if the result is forwarded - just use it as is
|
||||
// but keep all default fields in the response too.
|
||||
if (isForwarded)
|
||||
for (auto const& [k, v] : result)
|
||||
response.insert_or_assign(k, v);
|
||||
else
|
||||
response["result"] = result;
|
||||
}
|
||||
}
|
||||
catch (std::exception const& e)
|
||||
|
||||
Reference in New Issue
Block a user