#pragma once #include #include #include #include namespace DB { struct HTTPTimeouts { Poco::Timespan connection_timeout = Poco::Timespan(DEFAULT_HTTP_READ_BUFFER_CONNECTION_TIMEOUT, 0); Poco::Timespan send_timeout = Poco::Timespan(DEFAULT_HTTP_READ_BUFFER_TIMEOUT, 0); Poco::Timespan receive_timeout = Poco::Timespan(DEFAULT_HTTP_READ_BUFFER_TIMEOUT, 0); }; /** Perform HTTP POST request and provide response to read. */ class ReadWriteBufferFromHTTP : public ReadBuffer { private: Poco::URI uri; std::string method; HTTPTimeouts timeouts; Poco::Net::HTTPClientSession session; std::istream * istr; /// owned by session std::unique_ptr impl; public: using OutStreamCallback = std::function; ReadWriteBufferFromHTTP( const Poco::URI & uri, const std::string & method = {}, OutStreamCallback out_stream_callback = {}, size_t buffer_size_ = DBMS_DEFAULT_BUFFER_SIZE, const HTTPTimeouts & timeouts = {} ); bool nextImpl() override; }; }