Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
sysio::client::http Namespace Reference

Namespaces

namespace  detail
 

Classes

struct  connection_param
 
struct  parsed_url
 
struct  resolved_url
 

Typedefs

using http_context = std::unique_ptr<detail::http_context_impl, detail::http_context_deleter>
 

Functions

http_context create_http_context ()
 
void do_connect (tcp::socket &sock, const resolved_url &url)
 
template<class T >
std::string do_txrx (T &socket, boost::asio::streambuf &request_buff, unsigned int &status_code)
 
parsed_url parse_url (const string &server_url)
 
resolved_url resolve_url (const http_context &context, const parsed_url &url)
 
string format_host_header (const resolved_url &url)
 
fc::variant do_http_call (const connection_param &cp, const fc::variant &postdata, bool print_request, bool print_response)
 
 FC_DECLARE_EXCEPTION (connection_exception, 1100000, "Connection Exception")
 

Variables

const string chain_func_base = "/v1/chain"
 
const string get_info_func = chain_func_base + "/get_info"
 
const string get_transaction_status_func = chain_func_base + "/get_transaction_status"
 
const string send_txn_func = chain_func_base + "/send_transaction"
 
const string push_txn_func = chain_func_base + "/push_transaction"
 
const string send2_txn_func = chain_func_base + "/send_transaction2"
 
const string compute_txn_func = chain_func_base + "/compute_transaction"
 
const string push_txns_func = chain_func_base + "/push_transactions"
 
const string json_to_bin_func = chain_func_base + "/abi_json_to_bin"
 
const string get_block_func = chain_func_base + "/get_block"
 
const string get_block_info_func = chain_func_base + "/get_block_info"
 
const string get_block_header_state_func = chain_func_base + "/get_block_header_state"
 
const string get_account_func = chain_func_base + "/get_account"
 
const string get_table_func = chain_func_base + "/get_table_rows"
 
const string get_table_by_scope_func = chain_func_base + "/get_table_by_scope"
 
const string get_code_func = chain_func_base + "/get_code"
 
const string get_code_hash_func = chain_func_base + "/get_code_hash"
 
const string get_abi_func = chain_func_base + "/get_abi"
 
const string get_raw_abi_func = chain_func_base + "/get_raw_abi"
 
const string get_raw_code_and_abi_func = chain_func_base + "/get_raw_code_and_abi"
 
const string get_currency_balance_func = chain_func_base + "/get_currency_balance"
 
const string get_currency_stats_func = chain_func_base + "/get_currency_stats"
 
const string get_producers_func = chain_func_base + "/get_producers"
 
const string get_schedule_func = chain_func_base + "/get_producer_schedule"
 
const string get_required_keys = chain_func_base + "/get_required_keys"
 
const string history_func_base = "/v1/history"
 
const string trace_api_func_base = "/v1/trace_api"
 
const string get_actions_func = history_func_base + "/get_actions"
 
const string get_transaction_trace_func = trace_api_func_base + "/get_transaction_trace"
 
const string get_block_trace_func = trace_api_func_base + "/get_block"
 
const string get_transaction_func = history_func_base + "/get_transaction"
 
const string get_key_accounts_func = history_func_base + "/get_key_accounts"
 
const string get_controlled_accounts_func = history_func_base + "/get_controlled_accounts"
 
const string net_func_base = "/v1/net"
 
const string net_connect = net_func_base + "/connect"
 
const string net_disconnect = net_func_base + "/disconnect"
 
const string net_status = net_func_base + "/status"
 
const string net_connections = net_func_base + "/connections"
 
const string wallet_func_base = "/v1/wallet"
 
const string wallet_create = wallet_func_base + "/create"
 
const string wallet_open = wallet_func_base + "/open"
 
const string wallet_list = wallet_func_base + "/list_wallets"
 
const string wallet_list_keys = wallet_func_base + "/list_keys"
 
const string wallet_public_keys = wallet_func_base + "/get_public_keys"
 
const string wallet_lock = wallet_func_base + "/lock"
 
const string wallet_lock_all = wallet_func_base + "/lock_all"
 
const string wallet_unlock = wallet_func_base + "/unlock"
 
const string wallet_import_key = wallet_func_base + "/import_key"
 
const string wallet_remove_key = wallet_func_base + "/remove_key"
 
const string wallet_create_key = wallet_func_base + "/create_key"
 
const string wallet_sign_trx = wallet_func_base + "/sign_transaction"
 
const string kiod_stop = "/v1/" + string(client::config::key_store_executable_name) + "/stop"
 

Typedef Documentation

◆ http_context

using sysio::client::http::http_context = std::unique_ptr<detail::http_context_impl, detail::http_context_deleter>

Definition at line 15 of file httpc.hpp.

Function Documentation

◆ create_http_context()

http_context sysio::client::http::create_http_context ( )

Definition at line 43 of file httpc.cpp.

43 {
45 }
std::unique_ptr< detail::http_context_impl, detail::http_context_deleter > http_context
Definition httpc.hpp:15
Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_connect()

void sysio::client::http::do_connect ( tcp::socket & sock,
const resolved_url & url )

Definition at line 47 of file httpc.cpp.

47 {
48 // Get a list of endpoints corresponding to the server name.
49 vector<tcp::endpoint> endpoints;
50 endpoints.reserve(url.resolved_addresses.size());
51 for (const auto& addr: url.resolved_addresses) {
52 endpoints.emplace_back(boost::asio::ip::make_address(addr), url.resolved_port);
53 }
54 boost::asio::connect(sock, endpoints);
55 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_http_call()

fc::variant sysio::client::http::do_http_call ( const connection_param & cp,
const fc::variant & postdata,
bool print_request,
bool print_response )

Definition at line 184 of file httpc.cpp.

187 {
188 std::string postjson;
189 if( !postdata.is_null() ) {
190 postjson = print_request ? fc::json::to_pretty_string( postdata ) : fc::json::to_string( postdata, fc::time_point::maximum() );
191 }
192
193 const auto& url = cp.url;
194
195 boost::asio::streambuf request;
196 std::ostream request_stream(&request);
197 auto host_header_value = format_host_header(url);
198 request_stream << "POST " << url.path << " HTTP/1.0\r\n";
199 request_stream << "Host: " << host_header_value << "\r\n";
200 request_stream << "content-length: " << postjson.size() << "\r\n";
201 request_stream << "Accept: */*\r\n";
202 request_stream << "Connection: close\r\n";
203 // append more customized headers
204 std::vector<string>::iterator itr;
205 for (itr = cp.headers.begin(); itr != cp.headers.end(); itr++) {
206 request_stream << *itr << "\r\n";
207 }
208 request_stream << "\r\n";
209 request_stream << postjson;
210
211 if ( print_request ) {
212 string s(request.size(), '\0');
213 buffer_copy(boost::asio::buffer(s), request.data());
214 std::cerr << "REQUEST:" << std::endl
215 << "---------------------" << std::endl
216 << s << std::endl
217 << "---------------------" << std::endl;
218 }
219
220 unsigned int status_code;
221 std::string re;
222
223 try {
224 if(url.scheme == "unix") {
225 boost::asio::local::stream_protocol::socket unix_socket(cp.context->ios);
226 unix_socket.connect(boost::asio::local::stream_protocol::endpoint(url.server));
227 re = do_txrx(unix_socket, request, status_code);
228 }
229 else if(url.scheme == "http") {
230 tcp::socket socket(cp.context->ios);
231 do_connect(socket, url);
232 re = do_txrx(socket, request, status_code);
233 }
234 else { //https
235 boost::asio::ssl::context ssl_context(boost::asio::ssl::context::sslv23_client);
237
238 boost::asio::ssl::stream<boost::asio::ip::tcp::socket> socket(cp.context->ios, ssl_context);
239 SSL_set_tlsext_host_name(socket.native_handle(), url.server.c_str());
240 if(cp.verify_cert) {
241 socket.set_verify_mode(boost::asio::ssl::verify_peer);
242 socket.set_verify_callback(boost::asio::ssl::rfc2818_verification(url.server));
243 }
244 do_connect(socket.next_layer(), url);
245 socket.handshake(boost::asio::ssl::stream_base::client);
246 re = do_txrx(socket, request, status_code);
247 //try and do a clean shutdown; but swallow if this fails (other side could have already gave TCP the ax)
248 try {socket.shutdown();} catch(...) {}
249 }
250 } catch ( invalid_http_request& e ) {
251 e.append_log( FC_LOG_MESSAGE( info, "Please verify this url is valid: ${url}", ("url", url.scheme + "://" + url.server + ":" + url.port + url.path) ) );
252 e.append_log( FC_LOG_MESSAGE( info, "If the condition persists, please contact the RPC server administrator for ${server}!", ("server", url.server) ) );
253 throw;
254 }
255
256 const auto response_result = fc::json::from_string(re);
257 if( print_response ) {
258 std::cerr << "RESPONSE:" << std::endl
259 << "---------------------" << std::endl
260 << fc::json::to_pretty_string( response_result ) << std::endl
261 << "---------------------" << std::endl;
262 }
263 if( status_code == 200 || status_code == 201 || status_code == 202 ) {
264 return response_result;
265 } else if( status_code == 404 ) {
266 // Unknown endpoint
267 if (url.path.compare(0, chain_func_base.size(), chain_func_base) == 0) {
268 throw chain::missing_chain_api_plugin_exception(FC_LOG_MESSAGE(error, "Chain API plugin is not enabled"));
269 } else if (url.path.compare(0, wallet_func_base.size(), wallet_func_base) == 0) {
270 throw chain::missing_wallet_api_plugin_exception(FC_LOG_MESSAGE(error, "Wallet is not available"));
271 } else if (url.path.compare(0, history_func_base.size(), history_func_base) == 0) {
272 throw chain::missing_history_api_plugin_exception(FC_LOG_MESSAGE(error, "History API plugin is not enabled"));
273 } else if (url.path.compare(0, net_func_base.size(), net_func_base) == 0) {
274 throw chain::missing_net_api_plugin_exception(FC_LOG_MESSAGE(error, "Net API plugin is not enabled"));
275 } else if (url.path.compare(0, trace_api_func_base.size(), trace_api_func_base) == 0) {
276 if ( re.find("Trace API:") == string::npos ) {
277 throw chain::missing_trace_api_plugin_exception(FC_LOG_MESSAGE(error, "Trace API plugin is not enabled"));
278 }
279 }
280 } else {
281 auto &&error_info = response_result.as<sysio::error_results>().error;
282 // Construct fc exception from error
283 const auto &error_details = error_info.details;
284
285 fc::log_messages logs;
286 for (auto itr = error_details.begin(); itr != error_details.end(); itr++) {
287 const auto& context = fc::log_context(fc::log_level::error, itr->file.data(), itr->line_number, itr->method.data());
288 logs.emplace_back(fc::log_message(context, itr->message));
289 }
290
291 throw fc::exception(logs, error_info.code, error_info.name, error_info.what);
292 }
293
294 SYS_ASSERT( status_code == 200, http_request_fail, "Error code ${c}\n: ${msg}\n", ("c", status_code)("msg", re) );
295 return response_result;
296 }
#define SYS_ASSERT(expr, exc_type, FORMAT,...)
Definition exceptions.hpp:7
Used to generate a useful error report when an exception is thrown.
Definition exception.hpp:58
static string to_pretty_string(const variant &v, const yield_function_t &yield, const output_formatting format=output_formatting::stringify_large_ints_and_doubles)
Definition json.cpp:775
static variant from_string(const string &utf8_str, const parse_type ptype=parse_type::legacy_parser, uint32_t max_depth=DEFAULT_MAX_RECURSION_DEPTH)
Definition json.cpp:442
provides information about where and when a log message was generated.
aggregates a message along with the context and associated meta-information.
opath path() const
Definition url.cpp:182
std::optional< uint16_t > port() const
Definition url.cpp:194
bool is_null() const
Definition variant.cpp:309
#define FC_LOG_MESSAGE(LOG_LEVEL, FORMAT,...)
A helper method for generating log messages.
namespace sysio::chain
Definition authority.cpp:3
std::vector< log_message > log_messages
void add_platform_root_cas_to_context(boost::asio::ssl::context &ctx)
std::string do_txrx(T &socket, boost::asio::streambuf &request_buff, unsigned int &status_code)
Definition httpc.cpp:58
const string trace_api_func_base
Definition httpc.hpp:108
void do_connect(tcp::socket &sock, const resolved_url &url)
Definition httpc.cpp:47
const string chain_func_base
Definition httpc.hpp:81
const string wallet_func_base
Definition httpc.hpp:123
const string net_func_base
Definition httpc.hpp:116
const string history_func_base
Definition httpc.hpp:107
bool print_request
Definition main.cpp:187
bool print_response
Definition main.cpp:188
std::vector< string > & headers
Definition httpc.hpp:58
const http_context & context
Definition httpc.hpp:55
Structure used to create JSON error responses.
char * s
Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_txrx()

template<class T >
std::string sysio::client::http::do_txrx ( T & socket,
boost::asio::streambuf & request_buff,
unsigned int & status_code )

Definition at line 58 of file httpc.cpp.

58 {
59 // Send the request.
60 boost::asio::write(socket, request_buff);
61
62 // Read the response status line. The response streambuf will automatically
63 // grow to accommodate the entire line. The growth may be limited by passing
64 // a maximum size to the streambuf constructor.
65 boost::asio::streambuf response;
66 boost::asio::read_until(socket, response, "\r\n");
67
68 // Check that response is OK.
69 std::istream response_stream(&response);
70 std::string http_version;
71 response_stream >> http_version;
72 response_stream >> status_code;
73
74 std::string status_message;
75 std::getline(response_stream, status_message);
76 SYS_ASSERT( !(!response_stream || http_version.substr(0, 5) != "HTTP/"), invalid_http_response, "Invalid Response" );
77
78 // Read the response headers, which are terminated by a blank line.
79 boost::asio::read_until(socket, response, "\r\n\r\n");
80
81 // Process the response headers.
82 std::string header;
83 int response_content_length = -1;
84 std::regex clregex(R"xx(^content-length:\s+(\d+))xx", std::regex_constants::icase);
85 while (std::getline(response_stream, header) && header != "\r") {
86 std::smatch match;
87 if(std::regex_search(header, match, clregex))
88 response_content_length = std::stoi(match[1]);
89 }
90
91 // Attempt to read the response body using the length indicated by the
92 // Content-length header. If the header was not present just read all available bytes.
93 if( response_content_length != -1 ) {
94 response_content_length -= response.size();
95 if( response_content_length > 0 )
96 boost::asio::read(socket, response, boost::asio::transfer_exactly(response_content_length));
97 } else {
98 boost::system::error_code ec;
99 boost::asio::read(socket, response, boost::asio::transfer_all(), ec);
100 SYS_ASSERT(!ec || ec == boost::asio::ssl::error::stream_truncated, http_exception, "Unable to read http response: ${err}", ("err",ec.message()));
101 }
102
103 std::stringstream re;
104 re << &response;
105 return re.str();
106 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FC_DECLARE_EXCEPTION()

sysio::client::http::FC_DECLARE_EXCEPTION ( connection_exception ,
1100000 ,
"Connection Exception"  )

◆ format_host_header()

string sysio::client::http::format_host_header ( const resolved_url & url)

Definition at line 172 of file httpc.cpp.

172 {
173 // common practice is to only make the port explicit when it is the non-default port
174 if (
175 (url.scheme == "https" && url.resolved_port == 443) ||
176 (url.scheme == "http" && url.resolved_port == 80)
177 ) {
178 return url.server;
179 } else {
180 return url.server + ":" + url.port;
181 }
182 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ parse_url()

parsed_url sysio::client::http::parse_url ( const string & server_url)

Definition at line 108 of file httpc.cpp.

108 {
109 parsed_url res;
110
111 //unix socket doesn't quite follow classical "URL" rules so deal with it manually
112 if(boost::algorithm::starts_with(server_url, "unix://")) {
113 res.scheme = "unix";
114 res.server = server_url.substr(strlen("unix://"));
115 return res;
116 }
117
118 //via rfc3986 and modified a bit to suck out the port number
119 //Sadly this doesn't work for ipv6 addresses
120 std::regex rgx(R"xx(^(([^:/?#]+):)?(//([^:/?#]*)(:(\d+))?)?([^?#]*)(\?([^#]*))?(#(.*))?)xx");
121 std::smatch match;
122 if(std::regex_search(server_url.begin(), server_url.end(), match, rgx)) {
123 res.scheme = match[2];
124 res.server = match[4];
125 res.port = match[6];
126 res.path = match[7];
127 }
128 if(res.scheme != "http" && res.scheme != "https")
129 SYS_THROW(fail_to_resolve_host, "Unrecognized URL scheme (${s}) in URL \"${u}\"", ("s", res.scheme)("u", server_url));
130 if(res.server.empty())
131 SYS_THROW(fail_to_resolve_host, "No server parsed from URL \"${u}\"", ("u", server_url));
132 if(res.port.empty())
133 res.port = res.scheme == "http" ? "80" : "443";
134 boost::trim_right_if(res.path, boost::is_any_of("/"));
135 return res;
136 }
#define SYS_THROW(exc_type, FORMAT,...)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ resolve_url()

resolved_url sysio::client::http::resolve_url ( const http_context & context,
const parsed_url & url )

Definition at line 138 of file httpc.cpp.

138 {
139 if(url.scheme == "unix")
140 return resolved_url(url);
141
142 tcp::resolver resolver(context->ios);
143 boost::system::error_code ec;
144 auto result = resolver.resolve(tcp::v4(), url.server, url.port, ec);
145 if (ec) {
146 SYS_THROW(fail_to_resolve_host, "Error resolving \"${server}:${port}\" : ${m}", ("server", url.server)("port",url.port)("m",ec.message()));
147 }
148
149 // non error results are guaranteed to return a non-empty range
150 vector<string> resolved_addresses;
151 resolved_addresses.reserve(result.size());
152 std::optional<uint16_t> resolved_port;
153 bool is_loopback = true;
154
155 for(const auto& r : result) {
156 const auto& addr = r.endpoint().address();
157 if (addr.is_v6()) continue;
158 uint16_t port = r.endpoint().port();
159 resolved_addresses.emplace_back(addr.to_string());
160 is_loopback = is_loopback && addr.is_loopback();
161
162 if (resolved_port) {
163 SYS_ASSERT(*resolved_port == port, resolved_to_multiple_ports, "Service name \"${port}\" resolved to multiple ports and this is not supported!", ("port",url.port));
164 } else {
165 resolved_port = port;
166 }
167 }
168
169 return resolved_url(url, std::move(resolved_addresses), *resolved_port, is_loopback);
170 }
const mie::Vuint & r
Definition bn.cpp:28
unsigned short uint16_t
Definition stdint.h:125
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ chain_func_base

const string sysio::client::http::chain_func_base = "/v1/chain"

Definition at line 81 of file httpc.hpp.

◆ compute_txn_func

const string sysio::client::http::compute_txn_func = chain_func_base + "/compute_transaction"

Definition at line 87 of file httpc.hpp.

◆ get_abi_func

const string sysio::client::http::get_abi_func = chain_func_base + "/get_abi"

Definition at line 98 of file httpc.hpp.

◆ get_account_func

const string sysio::client::http::get_account_func = chain_func_base + "/get_account"

Definition at line 93 of file httpc.hpp.

◆ get_actions_func

const string sysio::client::http::get_actions_func = history_func_base + "/get_actions"

Definition at line 109 of file httpc.hpp.

◆ get_block_func

const string sysio::client::http::get_block_func = chain_func_base + "/get_block"

Definition at line 90 of file httpc.hpp.

◆ get_block_header_state_func

const string sysio::client::http::get_block_header_state_func = chain_func_base + "/get_block_header_state"

Definition at line 92 of file httpc.hpp.

◆ get_block_info_func

const string sysio::client::http::get_block_info_func = chain_func_base + "/get_block_info"

Definition at line 91 of file httpc.hpp.

◆ get_block_trace_func

const string sysio::client::http::get_block_trace_func = trace_api_func_base + "/get_block"

Definition at line 111 of file httpc.hpp.

◆ get_code_func

const string sysio::client::http::get_code_func = chain_func_base + "/get_code"

Definition at line 96 of file httpc.hpp.

◆ get_code_hash_func

const string sysio::client::http::get_code_hash_func = chain_func_base + "/get_code_hash"

Definition at line 97 of file httpc.hpp.

◆ get_controlled_accounts_func

const string sysio::client::http::get_controlled_accounts_func = history_func_base + "/get_controlled_accounts"

Definition at line 114 of file httpc.hpp.

◆ get_currency_balance_func

const string sysio::client::http::get_currency_balance_func = chain_func_base + "/get_currency_balance"

Definition at line 101 of file httpc.hpp.

◆ get_currency_stats_func

const string sysio::client::http::get_currency_stats_func = chain_func_base + "/get_currency_stats"

Definition at line 102 of file httpc.hpp.

◆ get_info_func

const string sysio::client::http::get_info_func = chain_func_base + "/get_info"

Definition at line 82 of file httpc.hpp.

◆ get_key_accounts_func

const string sysio::client::http::get_key_accounts_func = history_func_base + "/get_key_accounts"

Definition at line 113 of file httpc.hpp.

◆ get_producers_func

const string sysio::client::http::get_producers_func = chain_func_base + "/get_producers"

Definition at line 103 of file httpc.hpp.

◆ get_raw_abi_func

const string sysio::client::http::get_raw_abi_func = chain_func_base + "/get_raw_abi"

Definition at line 99 of file httpc.hpp.

◆ get_raw_code_and_abi_func

const string sysio::client::http::get_raw_code_and_abi_func = chain_func_base + "/get_raw_code_and_abi"

Definition at line 100 of file httpc.hpp.

◆ get_required_keys

const string sysio::client::http::get_required_keys = chain_func_base + "/get_required_keys"

Definition at line 105 of file httpc.hpp.

◆ get_schedule_func

const string sysio::client::http::get_schedule_func = chain_func_base + "/get_producer_schedule"

Definition at line 104 of file httpc.hpp.

◆ get_table_by_scope_func

const string sysio::client::http::get_table_by_scope_func = chain_func_base + "/get_table_by_scope"

Definition at line 95 of file httpc.hpp.

◆ get_table_func

const string sysio::client::http::get_table_func = chain_func_base + "/get_table_rows"

Definition at line 94 of file httpc.hpp.

◆ get_transaction_func

const string sysio::client::http::get_transaction_func = history_func_base + "/get_transaction"

Definition at line 112 of file httpc.hpp.

◆ get_transaction_status_func

const string sysio::client::http::get_transaction_status_func = chain_func_base + "/get_transaction_status"

Definition at line 83 of file httpc.hpp.

◆ get_transaction_trace_func

const string sysio::client::http::get_transaction_trace_func = trace_api_func_base + "/get_transaction_trace"

Definition at line 110 of file httpc.hpp.

◆ history_func_base

const string sysio::client::http::history_func_base = "/v1/history"

Definition at line 107 of file httpc.hpp.

◆ json_to_bin_func

const string sysio::client::http::json_to_bin_func = chain_func_base + "/abi_json_to_bin"

Definition at line 89 of file httpc.hpp.

◆ kiod_stop

const string sysio::client::http::kiod_stop = "/v1/" + string(client::config::key_store_executable_name) + "/stop"

Definition at line 136 of file httpc.hpp.

◆ net_connect

const string sysio::client::http::net_connect = net_func_base + "/connect"

Definition at line 117 of file httpc.hpp.

◆ net_connections

const string sysio::client::http::net_connections = net_func_base + "/connections"

Definition at line 120 of file httpc.hpp.

◆ net_disconnect

const string sysio::client::http::net_disconnect = net_func_base + "/disconnect"

Definition at line 118 of file httpc.hpp.

◆ net_func_base

const string sysio::client::http::net_func_base = "/v1/net"

Definition at line 116 of file httpc.hpp.

◆ net_status

const string sysio::client::http::net_status = net_func_base + "/status"

Definition at line 119 of file httpc.hpp.

◆ push_txn_func

const string sysio::client::http::push_txn_func = chain_func_base + "/push_transaction"

Definition at line 85 of file httpc.hpp.

◆ push_txns_func

const string sysio::client::http::push_txns_func = chain_func_base + "/push_transactions"

Definition at line 88 of file httpc.hpp.

◆ send2_txn_func

const string sysio::client::http::send2_txn_func = chain_func_base + "/send_transaction2"

Definition at line 86 of file httpc.hpp.

◆ send_txn_func

const string sysio::client::http::send_txn_func = chain_func_base + "/send_transaction"

Definition at line 84 of file httpc.hpp.

◆ trace_api_func_base

const string sysio::client::http::trace_api_func_base = "/v1/trace_api"

Definition at line 108 of file httpc.hpp.

◆ wallet_create

const string sysio::client::http::wallet_create = wallet_func_base + "/create"

Definition at line 124 of file httpc.hpp.

◆ wallet_create_key

const string sysio::client::http::wallet_create_key = wallet_func_base + "/create_key"

Definition at line 134 of file httpc.hpp.

◆ wallet_func_base

const string sysio::client::http::wallet_func_base = "/v1/wallet"

Definition at line 123 of file httpc.hpp.

◆ wallet_import_key

const string sysio::client::http::wallet_import_key = wallet_func_base + "/import_key"

Definition at line 132 of file httpc.hpp.

◆ wallet_list

const string sysio::client::http::wallet_list = wallet_func_base + "/list_wallets"

Definition at line 126 of file httpc.hpp.

◆ wallet_list_keys

const string sysio::client::http::wallet_list_keys = wallet_func_base + "/list_keys"

Definition at line 127 of file httpc.hpp.

◆ wallet_lock

const string sysio::client::http::wallet_lock = wallet_func_base + "/lock"

Definition at line 129 of file httpc.hpp.

◆ wallet_lock_all

const string sysio::client::http::wallet_lock_all = wallet_func_base + "/lock_all"

Definition at line 130 of file httpc.hpp.

◆ wallet_open

const string sysio::client::http::wallet_open = wallet_func_base + "/open"

Definition at line 125 of file httpc.hpp.

◆ wallet_public_keys

const string sysio::client::http::wallet_public_keys = wallet_func_base + "/get_public_keys"

Definition at line 128 of file httpc.hpp.

◆ wallet_remove_key

const string sysio::client::http::wallet_remove_key = wallet_func_base + "/remove_key"

Definition at line 133 of file httpc.hpp.

◆ wallet_sign_trx

const string sysio::client::http::wallet_sign_trx = wallet_func_base + "/sign_transaction"

Definition at line 135 of file httpc.hpp.

◆ wallet_unlock

const string sysio::client::http::wallet_unlock = wallet_func_base + "/unlock"

Definition at line 131 of file httpc.hpp.