Bitcoin Core 32.99.0
P2P Digital Currency
request.h
Go to the documentation of this file.
1// Copyright (c) 2010 Satoshi Nakamoto
2// Copyright (c) 2009-present The Bitcoin Core developers
3// Distributed under the MIT software license, see the accompanying
4// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6#ifndef BITCOIN_RPC_REQUEST_H
7#define BITCOIN_RPC_REQUEST_H
8
9#include <univalue.h>
10#include <util/fs.h>
11
12#include <any>
13#include <cstdint>
14#include <optional>
15#include <string>
16#include <vector>
17
18enum class JSONRPCVersion {
20 V2
21};
22
24UniValue JSONRPCRequestObj(const std::string& strMethod, const UniValue& params, const UniValue& id);
25UniValue JSONRPCReplyObj(UniValue result, UniValue error, std::optional<UniValue> id, JSONRPCVersion jsonrpc_version);
26UniValue JSONRPCError(int code, const std::string& message);
27
28enum class AuthCookieResult : uint8_t {
29 Disabled, // -norpccookiefile
30 Error,
31 Ok,
32};
33
43AuthCookieResult GenerateAuthCookie(const std::optional<fs::perms>& cookie_perms,
44 std::string& user,
45 std::string& pass);
46
48AuthCookieResult GetAuthCookie(std::string& cookie_out);
50void DeleteAuthCookie();
52std::vector<UniValue> JSONRPCProcessBatchReply(const UniValue& in);
53
55{
56public:
57 std::optional<UniValue> id = UniValue::VNULL;
58 std::string strMethod;
61 std::string URI;
62 std::string authUser;
63 std::string peerAddr;
64 std::any context;
66
67 void parse(const UniValue& valRequest);
68 [[nodiscard]] bool IsNotification() const { return !id.has_value() && m_json_version == JSONRPCVersion::V2; };
69};
70
71#endif // BITCOIN_RPC_REQUEST_H
UniValue params
Definition: request.h:59
std::string strMethod
Definition: request.h:58
JSONRPCVersion m_json_version
Definition: request.h:65
enum JSONRPCRequest::Mode mode
bool IsNotification() const
Definition: request.h:68
std::string peerAddr
Definition: request.h:63
void parse(const UniValue &valRequest)
Definition: request.cpp:201
std::string URI
Definition: request.h:61
std::string authUser
Definition: request.h:62
std::any context
Definition: request.h:64
@ VNULL
Definition: univalue.h:24
@ V2
BIP324 protocol.
std::vector< UniValue > JSONRPCProcessBatchReply(const UniValue &in)
Parse JSON-RPC batch reply into a vector.
Definition: request.cpp:181
UniValue JSONRPCRequestObj(const std::string &strMethod, const UniValue &params, const UniValue &id)
JSON-RPC 2.0 request, only used in bitcoin-cli.
Definition: request.cpp:46
UniValue JSONRPCError(int code, const std::string &message)
Definition: request.cpp:75
AuthCookieResult GetAuthCookie(std::string &cookie_out)
Read the RPC authentication cookie from disk.
Definition: request.cpp:153
JSONRPCVersion
Definition: request.h:18
AuthCookieResult GenerateAuthCookie(const std::optional< fs::perms > &cookie_perms, std::string &user, std::string &pass)
Generate a new RPC authentication cookie and write it to disk.
Definition: request.cpp:105
UniValue JSONRPCReplyObj(UniValue result, UniValue error, std::optional< UniValue > id, JSONRPCVersion jsonrpc_version)
Definition: request.cpp:56
AuthCookieResult
Definition: request.h:28
void DeleteAuthCookie()
Delete RPC authentication cookie from disk.
Definition: request.cpp:169