xrpld
Loading...
Searching...
No Matches
Version.h
1#pragma once
2
3#include <xrpld/app/main/Application.h> // IWYU pragma: keep
4#include <xrpld/rpc/Context.h>
5#include <xrpld/rpc/MethodNames.h>
6#include <xrpld/rpc/Role.h>
7#include <xrpld/rpc/detail/Handler.h>
8
9#include <xrpl/json/json_value.h>
10#include <xrpl/protocol/ApiVersion.h>
11
12#include <rpcspec/Errors.hpp>
13
14#include <cstdint>
15#include <expected>
16#include <functional>
17#include <string_view>
18
19namespace xrpl::rpc {
20
22{
23public:
29
30 explicit VersionHandler(JsonContext& context) : context_(context)
31 {
32 }
33
34 [[nodiscard]] std::expected<Output, ::rpc::Status>
35 process() const
36 {
37 return Output{
38 .apiVersion = context_.get().apiVersion,
39 .betaEnabled = context_.get().app.config().betaRpcApi,
40 };
41 }
42
43 static void
44 writeResult(json::Value& obj, Output const& output)
45 {
46 setVersion(obj, output.apiVersion, output.betaEnabled);
47 }
48
49 // NOLINTBEGIN(readability-identifier-naming)
51
52 static constexpr unsigned minApiVer = rpc::kApiMinimumSupportedVersion;
53
54 static constexpr unsigned maxApiVer = rpc::kApiMaximumValidVersion;
55
56 static constexpr Role role = Role::USER;
57
59 // NOLINTEND(readability-identifier-naming)
60
61private:
63};
64
65} // namespace xrpl::rpc
Represents a JSON value.
Definition json_value.h:117
static constexpr Condition condition
Definition Version.h:58
std::expected< Output, ::rpc::Status > process() const
Definition Version.h:35
static constexpr std::string_view name
Definition Version.h:50
VersionHandler(JsonContext &context)
Definition Version.h:30
static constexpr unsigned maxApiVer
Definition Version.h:54
static void writeResult(json::Value &obj, Output const &output)
Definition Version.h:44
static constexpr unsigned minApiVer
Definition Version.h:52
static constexpr Role role
Definition Version.h:56
std::reference_wrapper< JsonContext > context_
Definition Version.h:62
constexpr std::string_view kVersion
Definition MethodNames.h:92
API version numbers used in later API versions.
Definition ApiVersion.h:36
void setVersion(json::Value &parent, unsigned int apiVersion, bool betaEnabled)
Definition ApiVersion.h:61
static constexpr auto kApiMaximumValidVersion
Definition ApiVersion.h:47
static constexpr auto kApiMinimumSupportedVersion
Definition ApiVersion.h:42
Role
Indicates the level of administrative permission to grant.
Definition Role.h:27
@ USER
Definition Role.h:27