diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-11-28 22:48:30 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-11-28 22:48:30 -0500 |
commit | e1703aea3fd597b23bde90e6c505278c517be611 (patch) | |
tree | 37d98fc90c9cd0844388bfb79beda2204f44af92 /src/discord/httpclient.hpp | |
parent | fd53a76bf6f53a095a639765923a30f2206b2cd6 (diff) | |
parent | e02107feea8214a045e6faa969f00dcbc0d2b072 (diff) | |
download | abaddon-portaudio-e1703aea3fd597b23bde90e6c505278c517be611.tar.gz abaddon-portaudio-e1703aea3fd597b23bde90e6c505278c517be611.zip |
merge master
Diffstat (limited to 'src/discord/httpclient.hpp')
-rw-r--r-- | src/discord/httpclient.hpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/discord/httpclient.hpp b/src/discord/httpclient.hpp new file mode 100644 index 0000000..da8be37 --- /dev/null +++ b/src/discord/httpclient.hpp @@ -0,0 +1,39 @@ +#pragma once +#include <functional> +#include <future> +#include <string> +#include <unordered_map> +#include <memory> +#include <mutex> +#include <queue> +#include <glibmm.h> +#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<void(http::response_type r)> cb); + void MakeGET(const std::string &path, std::function<void(http::response_type r)> cb); + void MakePATCH(const std::string &path, const std::string &payload, std::function<void(http::response_type r)> cb); + void MakePOST(const std::string &path, const std::string &payload, std::function<void(http::response_type r)> cb); + void MakePUT(const std::string &path, const std::string &payload, std::function<void(http::response_type r)> cb); + +private: + void OnResponse(const http::response_type &r, std::function<void(http::response_type r)> cb); + void CleanupFutures(); + + mutable std::mutex m_mutex; + Glib::Dispatcher m_dispatcher; + std::queue<std::function<void()>> m_queue; + void RunCallbacks(); + + std::vector<std::future<void>> m_futures; + std::string m_api_base; + std::string m_authorization; + std::string m_agent; +}; |