Bitcoin Core 29.99.0
P2P Digital Currency
request.h
Go to the documentation of this file.
1// Copyright (c) 2010 Satoshi Nakamoto
2// Copyright (c) 2009-2021 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
16enum class JSONRPCVersion {
18 V2
19};
20
22UniValue JSONRPCRequestObj(const std::string& strMethod, const UniValue& params, const UniValue& id);
23UniValue JSONRPCReplyObj(UniValue result, UniValue error, std::optional<UniValue> id, JSONRPCVersion jsonrpc_version);
24UniValue JSONRPCError(int code, const std::string& message);
25
26enum class GenerateAuthCookieResult : uint8_t {
27 DISABLED, // -norpccookiefile
28 ERR,
29 OK,
30};
31
41GenerateAuthCookieResult GenerateAuthCookie(const std::optional<fs::perms>& cookie_perms,
42 std::string& user,
43 std::string& pass);
44
46bool GetAuthCookie(std::string *cookie_out);
48void DeleteAuthCookie();
50std::vector<UniValue> JSONRPCProcessBatchReply(const UniValue& in);
51
53{
54public:
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
UniValue params
Definition: request.h:57
std::string strMethod
Definition: request.h:56
JSONRPCVersion m_json_version
Definition: request.h:63
enum JSONRPCRequest::Mode mode
bool IsNotification() const
Definition: request.h:66
std::string peerAddr
Definition: request.h:61
void parse(const UniValue &valRequest)
Definition: request.cpp:199
std::string URI
Definition: request.h:59
std::string authUser
Definition: request.h:60
std::any context
Definition: request.h:62
@ VNULL
Definition: univalue.h:24
@ V2
BIP324 protocol.
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
std::vector< UniValue > JSONRPCProcessBatchReply(const UniValue &in)
Parse JSON-RPC batch reply into a vector.
Definition: request.cpp:179
bool GetAuthCookie(std::string *cookie_out)
Read the RPC authentication cookie from disk.
Definition: request.cpp:148
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
UniValue JSONRPCError(int code, const std::string &message)
Definition: request.cpp:70
JSONRPCVersion
Definition: request.h:16
GenerateAuthCookieResult
Definition: request.h:26
UniValue JSONRPCReplyObj(UniValue result, UniValue error, std::optional< UniValue > id, JSONRPCVersion jsonrpc_version)
Definition: request.cpp:51
void DeleteAuthCookie()
Delete RPC authentication cookie from disk.
Definition: request.cpp:167
@ OK
The message verification was successful.