Bitcoin Core  31.0.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 <any>
10 #include <optional>
11 #include <string>
12 
13 #include <univalue.h>
14 #include <util/fs.h>
15 
16 enum class JSONRPCVersion {
17  V1_LEGACY,
18  V2
19 };
20 
22 UniValue JSONRPCRequestObj(const std::string& strMethod, const UniValue& params, const UniValue& id);
23 UniValue JSONRPCReplyObj(UniValue result, UniValue error, std::optional<UniValue> id, JSONRPCVersion jsonrpc_version);
24 UniValue JSONRPCError(int code, const std::string& message);
25 
26 enum class GenerateAuthCookieResult : uint8_t {
27  DISABLED, // -norpccookiefile
28  ERR,
29  OK,
30 };
31 
41 GenerateAuthCookieResult GenerateAuthCookie(const std::optional<fs::perms>& cookie_perms,
42  std::string& user,
43  std::string& pass);
44 
46 bool GetAuthCookie(std::string *cookie_out);
48 void DeleteAuthCookie();
50 std::vector<UniValue> JSONRPCProcessBatchReply(const UniValue& in);
51 
53 {
54 public:
55  std::optional<UniValue> id = UniValue::VNULL;
56  std::string strMethod;
59  std::string URI;
60  std::string authUser;
61  std::string peerAddr;
62  std::any context;
64 
65  void parse(const UniValue& valRequest);
66  [[nodiscard]] bool IsNotification() const { return !id.has_value() && m_json_version == JSONRPCVersion::V2; };
67 };
68 
69 #endif // BITCOIN_RPC_REQUEST_H
std::any context
Definition: request.h:62
std::vector< UniValue > JSONRPCProcessBatchReply(const UniValue &in)
Parse JSON-RPC batch reply into a vector.
Definition: request.cpp:179
void DeleteAuthCookie()
Delete RPC authentication cookie from disk.
Definition: request.cpp:167
std::string strMethod
Definition: request.h:56
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:41
std::string peerAddr
Definition: request.h:61
bool GetAuthCookie(std::string *cookie_out)
Read the RPC authentication cookie from disk.
Definition: request.cpp:148
UniValue JSONRPCError(int code, const std::string &message)
Definition: request.cpp:70
UniValue params
Definition: request.h:57
enum JSONRPCRequest::Mode mode
UniValue JSONRPCReplyObj(UniValue result, UniValue error, std::optional< UniValue > id, JSONRPCVersion jsonrpc_version)
Definition: request.cpp:51
bool IsNotification() const
Definition: request.h:66
GenerateAuthCookieResult 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:100
JSONRPCVersion
Definition: request.h:16
void parse(const UniValue &valRequest)
Definition: request.cpp:199
auto result
Definition: common-types.h:74
JSONRPCVersion m_json_version
Definition: request.h:63
std::string URI
Definition: request.h:59
std::string authUser
Definition: request.h:60
GenerateAuthCookieResult
Definition: request.h:26