mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-30 13:07:32 -03:00
a0d86815cd
fa5e0452e8
rpc: Documentation fixups (MarcoFalke)fa91e8eda5
Use RPCHelpMan for all RPCs (MarcoFalke)fa520e72f7
lint: Must use RPCHelpMan to generate the RPC docs (MarcoFalke) Pull request description: The resulting documentation should not change unless the type in the oneline-summary was previously incorrect. (E.g. string vs bool) Tree-SHA512: 4ff355b6a53178f02781e97a7aca7ee1d0d97ff348b6bf5a01caa1c96904ee33c704465fae54c2cd7445097427fd04c71ad3779bb7a7ed886055ef36c1b5a1d0
82 lines
2.8 KiB
C++
82 lines
2.8 KiB
C++
// Copyright (c) 2017-2018 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_RPC_UTIL_H
|
|
#define BITCOIN_RPC_UTIL_H
|
|
|
|
#include <pubkey.h>
|
|
#include <script/standard.h>
|
|
#include <univalue.h>
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
class CKeyStore;
|
|
class CPubKey;
|
|
class CScript;
|
|
struct InitInterfaces;
|
|
|
|
//! Pointers to interfaces that need to be accessible from RPC methods. Due to
|
|
//! limitations of the RPC framework, there's currently no direct way to pass in
|
|
//! state to RPC method implementations.
|
|
extern InitInterfaces* g_rpc_interfaces;
|
|
|
|
CPubKey HexToPubKey(const std::string& hex_in);
|
|
CPubKey AddrToPubKey(CKeyStore* const keystore, const std::string& addr_in);
|
|
CScript CreateMultisigRedeemscript(const int required, const std::vector<CPubKey>& pubkeys);
|
|
|
|
UniValue DescribeAddress(const CTxDestination& dest);
|
|
|
|
struct RPCArg {
|
|
enum class Type {
|
|
OBJ,
|
|
ARR,
|
|
STR,
|
|
NUM,
|
|
BOOL,
|
|
OBJ_USER_KEYS, //!< Special type where the user must set the keys e.g. to define multiple addresses; as opposed to e.g. an options object where the keys are predefined
|
|
AMOUNT, //!< Special type representing a floating point amount (can be either NUM or STR)
|
|
STR_HEX, //!< Special type that is a STR with only hex chars
|
|
};
|
|
const std::string m_name; //!< The name of the arg (can be empty for inner args)
|
|
const Type m_type;
|
|
const std::vector<RPCArg> m_inner; //!< Only used for arrays or dicts
|
|
const bool m_optional;
|
|
const std::string m_oneline_description; //!< Should be empty unless it is supposed to override the auto-generated summary line
|
|
|
|
RPCArg(const std::string& name, const Type& type, const bool optional, const std::string& oneline_description = "")
|
|
: m_name{name}, m_type{type}, m_optional{optional}, m_oneline_description{oneline_description}
|
|
{
|
|
assert(type != Type::ARR && type != Type::OBJ);
|
|
}
|
|
|
|
RPCArg(const std::string& name, const Type& type, const std::vector<RPCArg>& inner, const bool optional, const std::string& oneline_description = "")
|
|
: m_name{name}, m_type{type}, m_inner{inner}, m_optional{optional}, m_oneline_description{oneline_description}
|
|
{
|
|
assert(type == Type::ARR || type == Type::OBJ);
|
|
}
|
|
|
|
std::string ToString() const;
|
|
|
|
private:
|
|
std::string ToStringObj() const;
|
|
};
|
|
|
|
class RPCHelpMan
|
|
{
|
|
public:
|
|
RPCHelpMan(const std::string& name, const std::string& description, const std::vector<RPCArg>& args)
|
|
: m_name{name}, m_description{description}, m_args{args}
|
|
{
|
|
}
|
|
|
|
std::string ToString() const;
|
|
|
|
private:
|
|
const std::string m_name;
|
|
const std::string m_description;
|
|
const std::vector<RPCArg> m_args;
|
|
};
|
|
|
|
#endif // BITCOIN_RPC_UTIL_H
|