From a51a54bc5979a2491f152abc47ad54e6b63f27c8 Mon Sep 17 00:00:00 2001 From: Dylam De La Torre Date: Tue, 23 Nov 2021 05:21:56 +0100 Subject: Restructure source and resource files (#46) importantly, res is now res/res and css is now res/css --- src/discord/websocket.cpp | 66 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/discord/websocket.cpp (limited to 'src/discord/websocket.cpp') diff --git a/src/discord/websocket.cpp b/src/discord/websocket.cpp new file mode 100644 index 0000000..ff50cd3 --- /dev/null +++ b/src/discord/websocket.cpp @@ -0,0 +1,66 @@ +#include "websocket.hpp" +#include + +Websocket::Websocket() {} + +void Websocket::StartConnection(std::string url) { + m_websocket.disableAutomaticReconnection(); + m_websocket.setUrl(url); + m_websocket.setOnMessageCallback(std::bind(&Websocket::OnMessage, this, std::placeholders::_1)); + m_websocket.setExtraHeaders(ix::WebSocketHttpHeaders { { "User-Agent", m_agent } }); // idk if this actually works + m_websocket.start(); +} + +void Websocket::SetUserAgent(std::string agent) { + m_agent = agent; +} + +void Websocket::Stop() { + Stop(ix::WebSocketCloseConstants::kNormalClosureCode); +} + +void Websocket::Stop(uint16_t code) { + m_websocket.stop(code); +} + +bool Websocket::IsOpen() const { + auto state = m_websocket.getReadyState(); + return state == ix::ReadyState::Open; +} + +void Websocket::Send(const std::string &str) { + printf("sending %s\n", str.c_str()); + m_websocket.sendText(str); +} + +void Websocket::Send(const nlohmann::json &j) { + Send(j.dump()); +} + +void Websocket::OnMessage(const ix::WebSocketMessagePtr &msg) { + switch (msg->type) { + case ix::WebSocketMessageType::Open: { + m_signal_open.emit(); + } break; + case ix::WebSocketMessageType::Close: { + m_signal_close.emit(msg->closeInfo.code); + } break; + case ix::WebSocketMessageType::Message: { + m_signal_message.emit(msg->str); + } break; + default: + break; + } +} + +Websocket::type_signal_open Websocket::signal_open() { + return m_signal_open; +} + +Websocket::type_signal_close Websocket::signal_close() { + return m_signal_close; +} + +Websocket::type_signal_message Websocket::signal_message() { + return m_signal_message; +} -- cgit v1.2.3 From 8c72d4c18d9c27ce1b5cd20f0cb98e5638c8becf Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Thu, 25 Nov 2021 02:57:11 -0500 Subject: dont print identify message to console mainly since i feel its only a matter of time before someone copy pastes it somewhere and itd be my fault also typedef -> using --- src/discord/discord.cpp | 3 +++ src/discord/websocket.cpp | 11 ++++++++++- src/discord/websocket.hpp | 11 ++++++++--- 3 files changed, 21 insertions(+), 4 deletions(-) (limited to 'src/discord/websocket.cpp') diff --git a/src/discord/discord.cpp b/src/discord/discord.cpp index 801282c..83db97b 100644 --- a/src/discord/discord.cpp +++ b/src/discord/discord.cpp @@ -2012,7 +2012,10 @@ void DiscordClient::SendIdentify() { msg.ClientState.HighestLastMessageID = "0"; msg.ClientState.ReadStateVersion = 0; msg.ClientState.UserGuildSettingsVersion = -1; + const bool b = m_websocket.GetPrintMessages(); + m_websocket.SetPrintMessages(false); m_websocket.Send(msg); + m_websocket.SetPrintMessages(b); } void DiscordClient::SendResume() { diff --git a/src/discord/websocket.cpp b/src/discord/websocket.cpp index ff50cd3..c7e43e9 100644 --- a/src/discord/websocket.cpp +++ b/src/discord/websocket.cpp @@ -15,6 +15,14 @@ void Websocket::SetUserAgent(std::string agent) { m_agent = agent; } +bool Websocket::GetPrintMessages() const noexcept { + return m_print_messages; +} + +void Websocket::SetPrintMessages(bool show) noexcept { + m_print_messages = show; +} + void Websocket::Stop() { Stop(ix::WebSocketCloseConstants::kNormalClosureCode); } @@ -29,7 +37,8 @@ bool Websocket::IsOpen() const { } void Websocket::Send(const std::string &str) { - printf("sending %s\n", str.c_str()); + if (m_print_messages) + printf("sending %s\n", str.c_str()); m_websocket.sendText(str); } diff --git a/src/discord/websocket.hpp b/src/discord/websocket.hpp index e6a6489..26cd5d4 100644 --- a/src/discord/websocket.hpp +++ b/src/discord/websocket.hpp @@ -13,6 +13,9 @@ public: void SetUserAgent(std::string agent); + bool GetPrintMessages() const noexcept; + void SetPrintMessages(bool show) noexcept; + void Send(const std::string &str); void Send(const nlohmann::json &j); void Stop(); @@ -26,9 +29,9 @@ private: std::string m_agent; public: - typedef sigc::signal type_signal_open; - typedef sigc::signal type_signal_close; - typedef sigc::signal type_signal_message; + using type_signal_open = sigc::signal; + using type_signal_close = sigc::signal; + using type_signal_message = sigc::signal; type_signal_open signal_open(); type_signal_close signal_close(); @@ -38,4 +41,6 @@ private: type_signal_open m_signal_open; type_signal_close m_signal_close; type_signal_message m_signal_message; + + bool m_print_messages = true; }; -- cgit v1.2.3