29#include <boost/utility/string_ref.hpp>
41 template<
class t_request,
class t_response,
class t_transport>
42 bool invoke_http_json(
const boost::string_ref
uri,
const t_request& out_struct, t_response& result_struct, t_transport& transport, std::chrono::milliseconds timeout = std::chrono::seconds(15),
const boost::string_ref method =
"POST")
44 std::string req_param;
49 additional_params.push_back(std::make_pair(
"Content-Type",
"application/json; charset=utf-8"));
52 if(!transport.invoke(
uri, method, req_param, timeout, std::addressof(pri), std::move(additional_params)))
54 LOG_PRINT_L1(
"Failed to invoke http request to " <<
uri);
60 LOG_PRINT_L1(
"Failed to invoke http request to " <<
uri <<
", internal error (null response ptr)");
66 LOG_PRINT_L1(
"Failed to invoke http request to " <<
uri <<
", wrong response code: " << pri->
m_response_code);
75 template<
class t_request,
class t_response,
class t_transport>
76 bool invoke_http_bin(
const boost::string_ref
uri,
const t_request& out_struct, t_response& result_struct, t_transport& transport, std::chrono::milliseconds timeout = std::chrono::seconds(15),
const boost::string_ref method =
"POST")
83 if(!transport.invoke(
uri, method, boost::string_ref{reinterpret_cast<const char*>(req_param.data()), req_param.size()}, timeout, std::addressof(pri)))
85 LOG_PRINT_L1(
"Failed to invoke http request to " <<
uri);
91 LOG_PRINT_L1(
"Failed to invoke http request to " <<
uri <<
", internal error (null response ptr)");
97 LOG_PRINT_L1(
"Failed to invoke http request to " <<
uri <<
", wrong response code: " << pri->
m_response_code);
109 template<
class t_request,
class t_response,
class t_transport>
110 bool invoke_http_json_rpc(
const boost::string_ref
uri, std::string method_name,
const t_request& out_struct, t_response& result_struct,
epee::json_rpc::error &error_struct, t_transport& transport, std::chrono::milliseconds timeout = std::chrono::seconds(15),
const boost::string_ref http_method =
"POST",
const std::string& req_id =
"0")
115 req_t.
method = std::move(method_name);
116 req_t.
params = out_struct;
123 if(resp_t.
error.code || resp_t.
error.message.size())
125 error_struct = resp_t.
error;
126 LOG_ERROR(
"RPC call of \"" << req_t.
method <<
"\" returned error: " << resp_t.
error.code <<
", message: " << resp_t.
error.message);
129 result_struct = resp_t.
result;
133 template<
class t_request,
class t_response,
class t_transport>
134 bool invoke_http_json_rpc(
const boost::string_ref
uri, std::string method_name,
const t_request& out_struct, t_response& result_struct, t_transport& transport, std::chrono::milliseconds timeout = std::chrono::seconds(15),
const boost::string_ref http_method =
"POST",
const std::string& req_id =
"0")
137 return invoke_http_json_rpc(
uri, method_name, out_struct, result_struct, error_struct, transport, timeout, http_method, req_id);
140 template<
class t_command,
class t_transport>
141 bool invoke_http_json_rpc(
const boost::string_ref
uri,
typename t_command::request& out_struct,
typename t_command::response& result_struct, t_transport& transport, std::chrono::milliseconds timeout = std::chrono::seconds(15),
const boost::string_ref http_method =
"POST",
const std::string& req_id =
"0")
143 return invoke_http_json_rpc(
uri, t_command::methodname(), out_struct, result_struct, transport, timeout, http_method, req_id);
Definition byte_slice.h:69
#define AUTO_VAL_INIT(v)
Definition misc_language.h:36
std::list< std::pair< std::string, std::string > > fields_list
Definition http_base.h:67
Definition abstract_http_client.h:36
bool invoke_http_bin(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct, t_transport &transport, std::chrono::milliseconds timeout=std::chrono::seconds(15), const boost::string_ref method="POST")
Definition http_abstract_invoke.h:76
bool invoke_http_json_rpc(const boost::string_ref uri, std::string method_name, const t_request &out_struct, t_response &result_struct, epee::json_rpc::error &error_struct, t_transport &transport, std::chrono::milliseconds timeout=std::chrono::seconds(15), const boost::string_ref http_method="POST", const std::string &req_id="0")
Definition http_abstract_invoke.h:110
bool invoke_http_json(const boost::string_ref uri, const t_request &out_struct, t_response &result_struct, t_transport &transport, std::chrono::milliseconds timeout=std::chrono::seconds(15), const boost::string_ref method="POST")
Definition http_abstract_invoke.h:42
bool store_t_to_binary(t_struct &str_in, byte_slice &binary_buff, size_t initial_buffer_size=8192)
Definition portable_storage_template_helper.h:118
bool store_t_to_json(t_struct &str_in, std::string &json_buff, size_t indent=0, bool insert_newlines=true)
Definition portable_storage_template_helper.h:66
bool load_t_from_binary(t_struct &out, const epee::span< const uint8_t > binary_buff, const epee::serialization::portable_storage::limits_t *limits=NULL)
Definition portable_storage_template_helper.h:91
bool load_t_from_json(t_struct &out, const std::string &json_buff)
Definition portable_storage_template_helper.h:45
TODO: (mj-xmr) This will be reduced in an another PR.
Definition byte_slice.h:40
span< const T > strspan(const U &s) noexcept
make a span from a std::string
Definition span.h:183
Definition jsonrpc_structs.h:32
Definition jsonrpc_structs.h:15
std::string method
Definition jsonrpc_structs.h:17
epee::serialization::storage_entry id
Definition jsonrpc_structs.h:18
std::string jsonrpc
Definition jsonrpc_structs.h:16
t_param params
Definition jsonrpc_structs.h:19
Definition jsonrpc_structs.h:58
t_param result
Definition jsonrpc_structs.h:60
t_error error
Definition jsonrpc_structs.h:62
Definition http_base.h:164
int m_response_code
Definition http_base.h:165
std::string m_body
Definition http_base.h:168
Definition portable_storage.h:53