#pragma once #include "util.hpp" #include #include #include #include #include namespace WebStat { class CurlError : public std::runtime_error { public: explicit CurlError(CURLcode code, const char * msg) : std::runtime_error {msg}, code(code) { } CURLcode code; }; using CurlPtr = std::unique_ptr>; using CurlMimePtr = std::unique_ptr>; using CurlErrorBuf = std::array; using CurlMultiPtr = std::unique_ptr>; class CurlOperation { public: CurlOperation(); virtual ~CurlOperation() = default; SPECIAL_MEMBERS_DEFAULT_MOVE_NO_COPY(CurlOperation); void addForm(const char * name, std::string_view data); virtual void whenComplete(DB::Connection *) const = 0; virtual void onError(DB::Connection *) const; CurlPtr hnd; CurlMimePtr mime; CurlErrorBuf err; std::string result; }; }