From 7ee916537c9896d9eb0167cd0b301a44a3e58ae8 Mon Sep 17 00:00:00 2001
From: Syping <syping@syping.de>
Date: Sat, 20 Jan 2024 09:44:55 +0100
Subject: [PATCH] use dpp::cluster::post_rest to send Webhook request

---
 src/message_queue.cpp |  4 ++--
 src/submit_queue.cpp  |  2 +-
 src/submit_queue.h    |  2 +-
 src/webhook_push.cpp  | 23 +++++------------------
 src/webhook_push.h    |  9 +--------
 5 files changed, 10 insertions(+), 30 deletions(-)

diff --git a/src/message_queue.cpp b/src/message_queue.cpp
index 0c46ebd..97ca8d9 100644
--- a/src/message_queue.cpp
+++ b/src/message_queue.cpp
@@ -21,7 +21,7 @@
 #include "settings.h"
 using namespace std::chrono_literals;
 
-inline bot::translated_message make_translated_message(const bot::message &message, const std::string &translated_message, const std::string &webhook)
+inline bot::translated_message make_translated_message(const bot::message &message, const std::string &translated_message, const dpp::webhook &webhook)
 {
     bot::translated_message tr_message;
     tr_message.author = message.author;
@@ -95,7 +95,7 @@ void bot::message_queue::run(bot::settings::settings *settings, bot::submit_queu
                     std::cerr << "Exception thrown while translating: unknown" << std::endl;
                 }
 
-                submit_queue->add(make_translated_message(message, tr_message, target->webhook));
+                submit_queue->add(make_translated_message(message, tr_message, dpp::webhook(target->webhook)));
             }
 
             std::this_thread::yield();
diff --git a/src/submit_queue.cpp b/src/submit_queue.cpp
index f910a6b..4416445 100644
--- a/src/submit_queue.cpp
+++ b/src/submit_queue.cpp
@@ -38,7 +38,7 @@ void bot::submit_queue::run(dpp::cluster *bot)
             m_queue.erase(m_queue.begin());
             m_mutex.unlock();
 
-            bot::webhook_push webhook_push(message.webhook, message, bot);
+            webhook_push::run(message.webhook, message, bot);
 
             std::this_thread::yield();
         }
diff --git a/src/submit_queue.h b/src/submit_queue.h
index 22ca530..99fe823 100644
--- a/src/submit_queue.h
+++ b/src/submit_queue.h
@@ -28,7 +28,7 @@ namespace bot {
         std::string author;
         std::string avatar;
         std::string message;
-        std::string webhook;
+        dpp::webhook webhook;
     };
 
     class submit_queue {
diff --git a/src/webhook_push.cpp b/src/webhook_push.cpp
index 863e6f5..11a80ed 100644
--- a/src/webhook_push.cpp
+++ b/src/webhook_push.cpp
@@ -18,8 +18,7 @@
 
 #include "webhook_push.h"
 
-bot::webhook_push::webhook_push(const std::string &webhook, const bot::translated_message &message, dpp::cluster *bot) :
-    m_message(message)
+void bot::webhook_push::run(const dpp::webhook &webhook, const bot::translated_message &message, dpp::cluster *bot)
 {
     const dpp::json json_body = {
         {"content", message.message},
@@ -28,12 +27,10 @@ bot::webhook_push::webhook_push(const std::string &webhook, const bot::translate
     };
 
     try {
-        dpp::http_request webhook_request(webhook, nullptr, dpp::m_post, json_body.dump(), "application/json");
-        const dpp::http_request_completion_t result = webhook_request.run(bot);
-        if (result.status != 204)
-            std::cerr << "Webhook push returned unexpected code " << result.status << " with response: " << result.body << std::endl;
-        m_content = result.body;
-        m_status = result.status;
+        bot->post_rest(API_PATH "/webhooks", std::to_string(webhook.id), dpp::utility::url_encode(webhook.token), dpp::m_post, json_body.dump(), [bot](dpp::json &json, const dpp::http_request_completion_t &event) {
+            if (event.status != 204)
+                std::cerr << "Webhook push returned unexpected code " << event.status << " with response: " << event.body << std::endl;
+        });
     }
     catch (const std::exception &exception) {
         std::cerr << "Exception thrown while Webhook push: " << exception.what() << std::endl;
@@ -42,13 +39,3 @@ bot::webhook_push::webhook_push(const std::string &webhook, const bot::translate
         std::cerr << "Exception thrown while Webhook push: unknown" << std::endl;
     }
 }
-
-const std::string bot::webhook_push::get_content() const
-{
-    return m_content;
-}
-
-uint16_t bot::webhook_push::get_status() const
-{
-    return m_status;
-}
diff --git a/src/webhook_push.h b/src/webhook_push.h
index 588b53e..6293d50 100644
--- a/src/webhook_push.h
+++ b/src/webhook_push.h
@@ -25,14 +25,7 @@
 namespace bot {
     class webhook_push {
     public:
-        explicit webhook_push(const std::string &webhook, const bot::translated_message &message, dpp::cluster *bot);
-        const std::string get_content() const;
-        uint16_t get_status() const;
-
-    private:
-        std::string m_content;
-        uint16_t m_status;
-        bot::translated_message m_message;
+        static void run(const dpp::webhook &webhook, const bot::translated_message &message, dpp::cluster *bot);
     };
 }