Changeset View
Changeset View
Standalone View
Standalone View
src/rpc/util.h
// Copyright (c) 2017 The Bitcoin Core developers | // Copyright (c) 2017 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_RPC_UTIL_H | #ifndef BITCOIN_RPC_UTIL_H | ||||
#define BITCOIN_RPC_UTIL_H | #define BITCOIN_RPC_UTIL_H | ||||
#include <node/transaction.h> | #include <node/transaction.h> | ||||
#include <rpc/protocol.h> | |||||
#include <script/standard.h> // For CTxDestination | #include <script/standard.h> // For CTxDestination | ||||
#include <univalue.h> | |||||
#include <util/check.h> | #include <util/check.h> | ||||
#include <string> | #include <string> | ||||
#include <vector> | #include <vector> | ||||
class CChainParams; | class CChainParams; | ||||
class CKeyStore; | class CKeyStore; | ||||
class CPubKey; | class CPubKey; | ||||
class CScript; | class CScript; | ||||
struct InitInterfaces; | struct InitInterfaces; | ||||
class UniValue; | class UniValue; | ||||
//! Pointers to interfaces that need to be accessible from RPC methods. Due to | //! 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 | //! limitations of the RPC framework, there's currently no direct way to pass in | ||||
//! state to RPC method implementations. | //! state to RPC method implementations. | ||||
extern InitInterfaces *g_rpc_interfaces; | extern InitInterfaces *g_rpc_interfaces; | ||||
/** | |||||
* Wrapper for UniValue::VType, which includes typeAny: used to denote don't | |||||
* care type. | |||||
*/ | |||||
struct UniValueType { | |||||
UniValueType(UniValue::VType _type) : typeAny(false), type(_type) {} | |||||
UniValueType() : typeAny(true) {} | |||||
bool typeAny; | |||||
UniValue::VType type; | |||||
}; | |||||
/** | |||||
* Type-check arguments; throws JSONRPCError if wrong type given. Does not check | |||||
* that the right number of arguments are passed, just that any passed are the | |||||
* correct type. | |||||
*/ | |||||
void RPCTypeCheck(const UniValue ¶ms, | |||||
const std::list<UniValueType> &typesExpected, | |||||
bool fAllowNull = false); | |||||
/** | |||||
* Type-check one argument; throws JSONRPCError if wrong type given. | |||||
*/ | |||||
void RPCTypeCheckArgument(const UniValue &value, | |||||
const UniValueType &typeExpected); | |||||
/** | |||||
* Check for expected keys/value types in an Object. | |||||
*/ | |||||
void RPCTypeCheckObj(const UniValue &o, | |||||
const std::map<std::string, UniValueType> &typesExpected, | |||||
bool fAllowNull = false, bool fStrict = false); | |||||
/** | |||||
* Utilities: convert hex-encoded values (throws error if not hex). | |||||
*/ | |||||
extern uint256 ParseHashV(const UniValue &v, std::string strName); | |||||
extern uint256 ParseHashO(const UniValue &o, std::string strKey); | |||||
extern std::vector<uint8_t> ParseHexV(const UniValue &v, std::string strName); | |||||
extern std::vector<uint8_t> ParseHexO(const UniValue &o, std::string strKey); | |||||
extern Amount AmountFromValue(const UniValue &value); | |||||
extern std::string HelpExampleCli(const std::string &methodname, | |||||
const std::string &args); | |||||
extern std::string HelpExampleRpc(const std::string &methodname, | |||||
const std::string &args); | |||||
CPubKey HexToPubKey(const std::string &hex_in); | CPubKey HexToPubKey(const std::string &hex_in); | ||||
CPubKey AddrToPubKey(const CChainParams &chainparams, CKeyStore *const keystore, | CPubKey AddrToPubKey(const CChainParams &chainparams, CKeyStore *const keystore, | ||||
const std::string &addr_in); | const std::string &addr_in); | ||||
CScript CreateMultisigRedeemscript(const int required, | CScript CreateMultisigRedeemscript(const int required, | ||||
const std::vector<CPubKey> &pubkeys); | const std::vector<CPubKey> &pubkeys); | ||||
UniValue DescribeAddress(const CTxDestination &dest); | UniValue DescribeAddress(const CTxDestination &dest); | ||||
▲ Show 20 Lines • Show All 136 Lines • Show Last 20 Lines |