diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-19 21:08:57 -0400 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2020-08-19 21:08:57 -0400 |
commit | 4b903bbd3e8436e1d63b8c12e76d8a3c924da5fc (patch) | |
tree | aaf25a464d5a308322afd82805bbbcb31ab2f65c /discord/http.hpp | |
parent | 0cd0260f2e4cfe11678cdac4f965c9abf64b3592 (diff) | |
download | abaddon-portaudio-4b903bbd3e8436e1d63b8c12e76d8a3c924da5fc.tar.gz abaddon-portaudio-4b903bbd3e8436e1d63b8c12e76d8a3c924da5fc.zip |
add http client and channel reordering (waste of time)
Diffstat (limited to 'discord/http.hpp')
-rw-r--r-- | discord/http.hpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/discord/http.hpp b/discord/http.hpp new file mode 100644 index 0000000..ded2758 --- /dev/null +++ b/discord/http.hpp @@ -0,0 +1,32 @@ +#pragma once +#include <cpr/cpr.h> +#include <functional> +#include <future> +#include <string> +#include <unordered_map> +#include <memory> + +template<typename F> +void fire_and_forget(F &&func) { + auto ptr = std::make_shared<std::future<void>>(); + *ptr = std::async(std::launch::async, [ptr, func]() { + func(); + }); +} + +class HTTPClient { +public: + HTTPClient(std::string api_base); + + void SetAuth(std::string auth); + void MakePATCH(std::string path, std::string payload, std::function<void(cpr::Response r)> cb); + void MakePOST(std::string path, std::string payload, std::function<void(cpr::Response r)> cb); + +private: + void OnResponse(cpr::Response r, std::function<void(cpr::Response r)> cb); + void CleanupFutures(); + + std::vector<std::future<void>> m_futures; + std::string m_api_base; + std::string m_authorization; +}; |