@@ -4,6 +4,8 @@
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <map>
|
||||
#include <optional>
|
||||
#include <string>
|
||||
|
||||
#include <boost/asio/any_io_executor.hpp>
|
||||
@@ -37,6 +39,14 @@ struct request {
|
||||
ligo::http::method method{ligo::http::method::POST};
|
||||
std::string target{"/"};
|
||||
boost::json::value payload{};
|
||||
std::map<std::string, std::string> headers{};
|
||||
std::optional<std::string> raw_body{};
|
||||
};
|
||||
|
||||
struct response {
|
||||
std::uint16_t status{};
|
||||
std::map<std::string, std::string> headers{};
|
||||
std::string body{};
|
||||
};
|
||||
|
||||
struct client_options {
|
||||
@@ -50,12 +60,14 @@ struct server_options {
|
||||
std::uint64_t max_body_size{16U * 1024U * 1024U};
|
||||
std::function<void(modulus::error)> on_error{};
|
||||
ligo::security_config security{};
|
||||
bool parse_query{false};
|
||||
};
|
||||
|
||||
class client {
|
||||
public:
|
||||
explicit client(ligo::http::endpoint endpoint, ligo::http::client_options options = {});
|
||||
auto call(ligo::http::request const &request) const -> boost::asio::awaitable<std::expected<boost::json::value, modulus::error>>;
|
||||
auto exchange(ligo::http::request const &request) const -> boost::asio::awaitable<std::expected<ligo::http::response, modulus::error>>;
|
||||
private:
|
||||
ligo::http::endpoint endpoint_{};
|
||||
ligo::http::client_options options_{};
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
|
||||
#include <boost/asio/awaitable.hpp>
|
||||
#include <boost/json/value.hpp>
|
||||
@@ -20,11 +22,15 @@ struct request_context {
|
||||
std::string peer{};
|
||||
std::string method{};
|
||||
std::string route{};
|
||||
std::map<std::string, std::string> headers{};
|
||||
std::map<std::string, std::string> query{};
|
||||
};
|
||||
|
||||
struct service_response {
|
||||
std::string content_type{"application/json"};
|
||||
std::string body{};
|
||||
std::uint16_t status{200};
|
||||
std::vector<std::pair<std::string, std::string>> headers{};
|
||||
};
|
||||
|
||||
class service_router {
|
||||
|
||||
Reference in New Issue
Block a user