#pragma once #include #include #include #include #include #include #include #include #include "../http.hpp" class HTTPClient { public: HTTPClient(); void SetBase(const std::string &url); void SetUserAgent(std::string agent); void SetAuth(std::string auth); void MakeDELETE(const std::string &path, std::function cb); void MakeGET(const std::string &path, std::function cb); void MakePATCH(const std::string &path, const std::string &payload, std::function cb); void MakePOST(const std::string &path, const std::string &payload, std::function cb); void MakePUT(const std::string &path, const std::string &payload, std::function cb); private: void OnResponse(const http::response_type &r, std::function cb); void CleanupFutures(); mutable std::mutex m_mutex; Glib::Dispatcher m_dispatcher; std::queue> m_queue; void RunCallbacks(); std::vector> m_futures; std::string m_api_base; std::string m_authorization; std::string m_agent; };