Bitcoin ABC 0.34.2
P2P Digital Currency
Classes | Functions | Variables
rest.cpp File Reference
#include <rest.h>
#include <blockfilter.h>
#include <chain.h>
#include <chainparams.h>
#include <config.h>
#include <core_io.h>
#include <httpserver.h>
#include <index/blockfilterindex.h>
#include <index/txindex.h>
#include <node/blockstorage.h>
#include <node/context.h>
#include <primitives/block.h>
#include <primitives/transaction.h>
#include <rpc/blockchain.h>
#include <rpc/mempool.h>
#include <rpc/protocol.h>
#include <rpc/server.h>
#include <rpc/server_util.h>
#include <streams.h>
#include <sync.h>
#include <txmempool.h>
#include <util/any.h>
#include <validation.h>
#include <univalue.h>
#include <any>
#include <string>
Include dependency graph for rest.cpp:

Go to the source code of this file.

Classes

struct  CCoin
 

Functions

static bool RESTERR (HTTPRequest *req, enum HTTPStatusCode status, std::string message)
 
static NodeContext * GetNodeContext (const std::any &context, HTTPRequest *req)
 Get the node context. More...
 
static CTxMemPool * GetMemPool (const std::any &context, HTTPRequest *req)
 Get the node context mempool. More...
 
static ChainstateManager * GetChainman (const std::any &context, HTTPRequest *req)
 Get the node context chainstatemanager. More...
 
RESTResponseFormat ParseDataFormat (std::string &param, const std::string &strReq)
 Parse a URI to get the data format and URI without data format and query string. More...
 
static std::string AvailableDataFormatsString ()
 
static bool CheckWarmup (HTTPRequest *req)
 
static bool rest_headers (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_block (const Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart, TxVerbosity tx_verbosity)
 
static bool rest_block_extended (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_block_notxdetails (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_filter_header (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_block_filter (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_chaininfo (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_mempool_info (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_mempool_contents (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_tx (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_getutxos (Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_blockhash_by_height (Config &config, const std::any &context, HTTPRequest *req, const std::string &str_uri_part)
 
void StartREST (const std::any &context)
 Start HTTP REST subsystem. More...
 
void InterruptREST ()
 Interrupt RPC REST subsystem. More...
 
void StopREST ()
 Stop HTTP REST subsystem. More...
 

Variables

static const size_t MAX_GETUTXOS_OUTPOINTS = 15
 
static constexpr unsigned int MAX_REST_HEADERS_RESULTS = 2000
 
struct {
   RESTResponseFormat   rf
 
   const char *   name
 
} rf_names []
 
struct {
   const char *   prefix
 
   bool(*   handler )(Config &config, const
      std::any &context, HTTPRequest
      *req, const std::string
      &strReq)
 
} uri_prefixes []
 

Function Documentation

◆ AvailableDataFormatsString()

static std::string AvailableDataFormatsString ( )
static

Definition at line 159 of file rest.cpp.

Here is the caller graph for this function:

◆ CheckWarmup()

static bool CheckWarmup ( HTTPRequest *  req)
static

Definition at line 176 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetChainman()

static ChainstateManager * GetChainman ( const std::any &  context,
HTTPRequest *  req 
)
static

Get the node context chainstatemanager.

Parameters
[in]reqThe HTTP request, whose status code will be set if node context chainstatemanager is not found.
Returns
Pointer to the chainstatemanager or nullptr if none found.

Definition at line 118 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetMemPool()

static CTxMemPool * GetMemPool ( const std::any &  context,
HTTPRequest *  req 
)
static

Get the node context mempool.

Parameters
[in]reqThe HTTP request, whose status code will be set if node context mempool is not found.
Returns
Pointer to the mempool or nullptr if no mempool found.

Definition at line 102 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNodeContext()

static NodeContext * GetNodeContext ( const std::any &  context,
HTTPRequest *  req 
)
static

Get the node context.

Parameters
[in]reqThe HTTP request, whose status code will be set if node context is not found.
Returns
Pointer to the node context or nullptr if not found.

Definition at line 82 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InterruptREST()

void InterruptREST ( )

Interrupt RPC REST subsystem.

Definition at line 1105 of file rest.cpp.

Here is the caller graph for this function:

◆ ParseDataFormat()

RESTResponseFormat ParseDataFormat ( std::string &  param,
const std::string &  strReq 
)

Parse a URI to get the data format and URI without data format and query string.

Parameters
[out]paramThe strReq without the data format string and without the query string (if any).
[in]strReqThe URI to be parsed.
Returns
RESTResponseFormat that was parsed from the URI.

Definition at line 133 of file rest.cpp.

Here is the caller graph for this function:

◆ rest_block()

static bool rest_block ( const Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart,
TxVerbosity  tx_verbosity 
)
static

Definition at line 295 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rest_block_extended()

static bool rest_block_extended ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 370 of file rest.cpp.

Here is the call graph for this function:

◆ rest_block_filter()

static bool rest_block_filter ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 529 of file rest.cpp.

Here is the call graph for this function:

◆ rest_block_notxdetails()

static bool rest_block_notxdetails ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 377 of file rest.cpp.

Here is the call graph for this function:

◆ rest_blockhash_by_height()

static bool rest_blockhash_by_height ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  str_uri_part 
)
static

Definition at line 1019 of file rest.cpp.

Here is the call graph for this function:

◆ rest_chaininfo()

static bool rest_chaininfo ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 633 of file rest.cpp.

Here is the call graph for this function:

◆ rest_filter_header()

static bool rest_filter_header ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 383 of file rest.cpp.

Here is the call graph for this function:

◆ rest_getutxos()

static bool rest_getutxos ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 790 of file rest.cpp.

Here is the call graph for this function:

◆ rest_headers()

static bool rest_headers ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 186 of file rest.cpp.

Here is the call graph for this function:

◆ rest_mempool_contents()

static bool rest_mempool_contents ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 691 of file rest.cpp.

Here is the call graph for this function:

◆ rest_mempool_info()

static bool rest_mempool_info ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 661 of file rest.cpp.

Here is the call graph for this function:

◆ rest_tx()

static bool rest_tx ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strURIPart 
)
static

Definition at line 723 of file rest.cpp.

Here is the call graph for this function:

◆ RESTERR()

static bool RESTERR ( HTTPRequest *  req,
enum HTTPStatusCode  status,
std::string  message 
)
static

Definition at line 68 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartREST()

void StartREST ( const std::any &  context)

Start HTTP REST subsystem.

Precondition; HTTP and RPC has been started.

Definition at line 1095 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StopREST()

void StopREST ( )

Stop HTTP REST subsystem.

Precondition; HTTP and RPC has been stopped.

Definition at line 1107 of file rest.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ handler

bool(* handler) (Config &config, const std::any &context, HTTPRequest *req, const std::string &strReq) ( Config &  config,
const std::any &  context,
HTTPRequest *  req,
const std::string &  strReq 
)

Definition at line 1079 of file rest.cpp.

◆ MAX_GETUTXOS_OUTPOINTS

const size_t MAX_GETUTXOS_OUTPOINTS = 15
static

Definition at line 41 of file rest.cpp.

◆ MAX_REST_HEADERS_RESULTS

constexpr unsigned int MAX_REST_HEADERS_RESULTS = 2000
staticconstexpr

Definition at line 42 of file rest.cpp.

◆ name

const char* name

Definition at line 46 of file rest.cpp.

◆ prefix

const char* prefix

Definition at line 1078 of file rest.cpp.

◆ rf

Definition at line 45 of file rest.cpp.

◆ 

const struct { ... } rf_names[]

◆ 

const struct { ... } uri_prefixes[]
Initial value:
= {
{"/rest/tx/", rest_tx},
{"/rest/block/notxdetails/", rest_block_notxdetails},
{"/rest/block/", rest_block_extended},
{"/rest/blockfilter/", rest_block_filter},
{"/rest/blockfilterheaders/", rest_filter_header},
{"/rest/chaininfo", rest_chaininfo},
{"/rest/mempool/info", rest_mempool_info},
{"/rest/mempool/contents", rest_mempool_contents},
{"/rest/headers/", rest_headers},
{"/rest/getutxos", rest_getutxos},
{"/rest/blockhashbyheight/", rest_blockhash_by_height},
}
static bool rest_filter_header(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:383
static bool rest_block_filter(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:529
static bool rest_blockhash_by_height(Config &config, const std::any &context, HTTPRequest *req, const std::string &str_uri_part)
Definition: rest.cpp:1019
static bool rest_mempool_info(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:661
static bool rest_headers(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:186
static bool rest_block_extended(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:370
static bool rest_mempool_contents(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:691
static bool rest_block_notxdetails(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:377
static bool rest_chaininfo(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:633
static bool rest_tx(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:723
static bool rest_getutxos(Config &config, const std::any &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:790