#pragma once #include "util/TestHttpClient.hpp" #include #include #include #include #include #include #include #include #include #include #include class WebSocketSyncClient { boost::asio::io_context ioc_; boost::asio::ip::tcp::resolver resolver_{ioc_}; boost::beast::websocket::stream ws_{ioc_}; public: void connect( std::string const& host, std::string const& port, std::vector additionalHeaders = {} ); void disconnect(); std::string syncPost(std::string const& body); }; class WebSocketAsyncClient { boost::beast::websocket::stream stream_; public: WebSocketAsyncClient(boost::asio::io_context& ioContext); std::expected connect( std::string const& host, std::string const& port, boost::asio::yield_context yield, std::chrono::steady_clock::duration timeout, std::vector additionalHeaders = {} ); std::expected send( boost::asio::yield_context yield, std::string_view message, std::chrono::steady_clock::duration timeout ); std::expected receive(boost::asio::yield_context yield, std::chrono::steady_clock::duration timeout); void gracefulClose(boost::asio::yield_context yield, std::chrono::steady_clock::duration timeout); void close(); }; class WebServerSslSyncClient { boost::asio::io_context ioc_; std::optional< boost::beast::websocket::stream>> ws_; public: void connect(std::string const& host, std::string const& port); void disconnect(); std::string syncPost(std::string const& body); };