feat: Ledger index (#1503)

Fixed #1052
This commit is contained in:
cyan317
2024-07-02 13:58:21 +01:00
committed by GitHub
parent d26c93a711
commit 66849432be
11 changed files with 502 additions and 0 deletions

View File

@@ -34,6 +34,9 @@
#include <charconv>
#include <cstdint>
#include <ctime>
#include <iomanip>
#include <sstream>
#include <stdexcept>
#include <string>
#include <string_view>
@@ -51,6 +54,26 @@ Required::verify(boost::json::value const& value, std::string_view key)
return {};
}
[[nodiscard]] MaybeError
TimeFormatValidator::verify(boost::json::value const& value, std::string_view key) const
{
using boost::json::value_to;
if (not value.is_object() or not value.as_object().contains(key))
return {}; // ignore. field does not exist, let 'required' fail instead
if (not value.as_object().at(key).is_string())
return Error{Status{RippledError::rpcINVALID_PARAMS}};
std::tm time = {};
std::stringstream stream(value_to<std::string>(value.as_object().at(key)));
stream >> std::get_time(&time, format_.c_str());
if (stream.fail())
return Error{Status{RippledError::rpcINVALID_PARAMS}};
return {};
}
[[nodiscard]] MaybeError
CustomValidator::verify(boost::json::value const& value, std::string_view key) const
{