Bitcoin Core  0.20.99
P2P Digital Currency
Classes | Enumerations | Functions | Variables
rest.cpp File Reference
#include <chain.h>
#include <chainparams.h>
#include <core_io.h>
#include <httpserver.h>
#include <index/txindex.h>
#include <node/context.h>
#include <primitives/block.h>
#include <primitives/transaction.h>
#include <rpc/blockchain.h>
#include <rpc/protocol.h>
#include <rpc/server.h>
#include <streams.h>
#include <sync.h>
#include <txmempool.h>
#include <util/check.h>
#include <util/ref.h>
#include <util/strencodings.h>
#include <validation.h>
#include <version.h>
#include <boost/algorithm/string.hpp>
#include <univalue.h>
Include dependency graph for rest.cpp:

Go to the source code of this file.

Classes

struct  CCoin
 

Enumerations

enum  RetFormat { RetFormat::UNDEF, RetFormat::BINARY, RetFormat::HEX, RetFormat::JSON }
 

Functions

static bool RESTERR (HTTPRequest *req, enum HTTPStatusCode status, std::string message)
 
static NodeContextGetNodeContext (const util::Ref &context, HTTPRequest *req)
 Get the node context. More...
 
static CTxMemPoolGetMemPool (const util::Ref &context, HTTPRequest *req)
 Get the node context mempool. More...
 
static RetFormat ParseDataFormat (std::string &param, const std::string &strReq)
 
static std::string AvailableDataFormatsString ()
 
static bool CheckWarmup (HTTPRequest *req)
 
static bool rest_headers (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_block (HTTPRequest *req, const std::string &strURIPart, bool showTxDetails)
 
static bool rest_block_extended (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_block_notxdetails (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
RPCHelpMan getblockchaininfo ()
 
static bool rest_chaininfo (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_mempool_info (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_mempool_contents (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_tx (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_getutxos (const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
 
static bool rest_blockhash_by_height (const util::Ref &context, HTTPRequest *req, const std::string &str_uri_part)
 
void StartREST (const util::Ref &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
 
struct {
   RetFormat   rf
 
   const char *   name
 
rf_names []
 
struct {
   const char *   prefix
 
   bool(*   handler )(const util::Ref &context,
      HTTPRequest *req, const
      std::string &strReq)
 
uri_prefixes []
 

Enumeration Type Documentation

◆ RetFormat

enum RetFormat
strong
Enumerator
UNDEF 
BINARY 
HEX 
JSON 

Definition at line 32 of file rest.cpp.

Function Documentation

◆ AvailableDataFormatsString()

static std::string AvailableDataFormatsString ( )
static

Definition at line 129 of file rest.cpp.

Here is the caller graph for this function:

◆ CheckWarmup()

static bool CheckWarmup ( HTTPRequest req)
static

Definition at line 145 of file rest.cpp.

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

◆ getblockchaininfo()

RPCHelpMan getblockchaininfo ( )

Definition at line 1262 of file blockchain.cpp.

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

◆ GetMemPool()

static CTxMemPool* GetMemPool ( const util::Ref 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 98 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 util::Ref 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 77 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 692 of file rest.cpp.

Here is the caller graph for this function:

◆ ParseDataFormat()

static RetFormat ParseDataFormat ( std::string &  param,
const std::string &  strReq 
)
static

Definition at line 108 of file rest.cpp.

Here is the caller graph for this function:

◆ rest_block()

static bool rest_block ( HTTPRequest req,
const std::string &  strURIPart,
bool  showTxDetails 
)
static

Definition at line 231 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 ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 295 of file rest.cpp.

Here is the call graph for this function:

◆ rest_block_notxdetails()

static bool rest_block_notxdetails ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 300 of file rest.cpp.

Here is the call graph for this function:

◆ rest_blockhash_by_height()

static bool rest_blockhash_by_height ( const util::Ref context,
HTTPRequest req,
const std::string &  str_uri_part 
)
static

Definition at line 623 of file rest.cpp.

Here is the call graph for this function:

◆ rest_chaininfo()

static bool rest_chaininfo ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 308 of file rest.cpp.

Here is the call graph for this function:

◆ rest_getutxos()

static bool rest_getutxos ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 437 of file rest.cpp.

Here is the call graph for this function:

◆ rest_headers()

static bool rest_headers ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 153 of file rest.cpp.

Here is the call graph for this function:

◆ rest_mempool_contents()

static bool rest_mempool_contents ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 355 of file rest.cpp.

Here is the call graph for this function:

◆ rest_mempool_info()

static bool rest_mempool_info ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 331 of file rest.cpp.

Here is the call graph for this function:

◆ rest_tx()

static bool rest_tx ( const util::Ref context,
HTTPRequest req,
const std::string &  strURIPart 
)
static

Definition at line 378 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 63 of file rest.cpp.

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

◆ StartREST()

void StartREST ( const util::Ref context)

Start HTTP REST subsystem.

Precondition; HTTP and RPC has been started.

Definition at line 684 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 696 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) (const util::Ref &context, HTTPRequest *req, const std::string &strReq)

Definition at line 671 of file rest.cpp.

◆ MAX_GETUTXOS_OUTPOINTS

const size_t MAX_GETUTXOS_OUTPOINTS = 15
static

Definition at line 30 of file rest.cpp.

◆ name

const char* name

Definition at line 41 of file rest.cpp.

◆ prefix

const char* prefix

Definition at line 670 of file rest.cpp.

◆ rf

Definition at line 40 of file rest.cpp.

◆ rf_names

const { ... } rf_names[]

◆ uri_prefixes

const { ... } uri_prefixes[]
Initial value:
= {
{"/rest/tx/", rest_tx},
{"/rest/block/notxdetails/", rest_block_notxdetails},
{"/rest/block/", rest_block_extended},
{"/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_block_extended(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:295
static bool rest_block_notxdetails(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:300
static bool rest_blockhash_by_height(const util::Ref &context, HTTPRequest *req, const std::string &str_uri_part)
Definition: rest.cpp:623
static bool rest_mempool_contents(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:355
static bool rest_mempool_info(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:331
static bool rest_getutxos(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:437
static bool rest_headers(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:153
static bool rest_chaininfo(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:308
static bool rest_tx(const util::Ref &context, HTTPRequest *req, const std::string &strURIPart)
Definition: rest.cpp:378