#pragma once #include #include #include #include #include #include #include #include #include class HTTPClient { public: HTTPClient(std::string api_base); void SetAuth(std::string auth); void MakeDELETE(std::string path, std::function cb); void MakeGET(std::string path, std::function cb); void MakePATCH(std::string path, std::string payload, std::function cb); void MakePOST(std::string path, std::string payload, std::function cb); void MakePUT(std::string path, std::string payload, std::function cb); private: void OnResponse(cpr::Response 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; };