abaddon-ppc/discord/http.hpp

38 lines
1.2 KiB
C++
Raw Normal View History

#pragma once
#include <cpr/cpr.h>
#include <functional>
#include <future>
#include <string>
#include <unordered_map>
#include <memory>
#include <mutex>
#include <queue>
#include <glibmm.h>
class HTTPClient {
public:
HTTPClient(std::string api_base);
2020-11-27 06:37:01 +00:00
void SetUserAgent(std::string agent);
void SetAuth(std::string auth);
2020-08-30 05:59:14 +00:00
void MakeDELETE(std::string path, std::function<void(cpr::Response r)> cb);
2020-08-20 07:19:16 +00:00
void MakeGET(std::string path, std::function<void(cpr::Response r)> cb);
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);
2020-10-12 22:17:53 +00:00
void MakePUT(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();
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;
2020-11-27 06:37:01 +00:00
std::string m_agent;
};