29 #include <boost/utility/string_ref.hpp> 40 template<
class t_request,
class t_response,
class t_transport>
41 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 =
"GET")
48 additional_params.push_back(std::make_pair(
"Content-Type",
"application/json; charset=utf-8"));
51 if(!
transport.invoke(uri, method, req_param, timeout, std::addressof(pri),
std::move(additional_params)))
53 LOG_PRINT_L1(
"Failed to invoke http request to " << uri);
59 LOG_PRINT_L1(
"Failed to invoke http request to " << uri <<
", internal error (null response ptr)");
72 template<
class t_response,
class t_transport>
73 bool get_http_json(
const boost::string_ref uri, t_response& result_struct, t_transport&
transport, std::chrono::milliseconds timeout = std::chrono::seconds(15),
const boost::string_ref method =
"GET") {
77 const int MAX_RETRY_COUNT = 10;
80 while(!
transport.invoke(uri, method,
"", timeout, std::addressof(pri)) && retryCount < MAX_RETRY_COUNT) {
83 LOG_PRINT_L1(
"Failed to invoke http request. Retrying (" << retryCount <<
"/" << MAX_RETRY_COUNT <<
").");
86 if(retryCount == MAX_RETRY_COUNT)
88 LOG_PRINT_L1(
"Failed to invoke http request to " << uri);
94 LOG_PRINT_L1(
"Failed to invoke http request to " << uri <<
", internal error (null response ptr)");
108 template<
class t_request,
class t_response,
class t_transport>
109 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 =
"GET")
116 if(!
transport.invoke(uri, method, req_param, timeout, std::addressof(pri)))
118 LOG_PRINT_L1(
"Failed to invoke http request to " << uri);
124 LOG_PRINT_L1(
"Failed to invoke http request to " << uri <<
", internal error (null response ptr)");
137 template<
class t_request,
class t_response,
class t_transport>
144 req_t.
params = out_struct;
155 result_struct = resp_t.
result;
159 template<
class t_command,
class t_transport>
bool store_t_to_binary(t_struct &str_in, std::string &binary_buff, size_t indent=0)
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="GET")
std::list< std::pair< std::string, std::string > > fields_list
epee::serialization::storage_entry id
epee::misc_utils::struct_init< response_t > response
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="GET")
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="GET", const std::string &req_id="0")
bool store_t_to_json(t_struct &str_in, std::string &json_buff, size_t indent=0, bool insert_newlines=true)
bool load_t_from_json(t_struct &out, const std::string &json_buff)
bool load_t_from_binary(t_struct &out, const epee::span< const uint8_t > binary_buff)
const T & move(const T &t)
bool get_http_json(const boost::string_ref uri, t_response &result_struct, t_transport &transport, std::chrono::milliseconds timeout=std::chrono::seconds(15), const boost::string_ref method="GET")
std::shared_ptr< Transport > transport(const std::string &path)