This commit is contained in:
fluttershy 2025-01-31 13:04:37 +05:00
parent 188bf75a50
commit 2a9297a3b2
12 changed files with 113 additions and 107 deletions

View File

@ -4,5 +4,5 @@ Checks:
modernize-*, modernize-*,
performance-*, performance-*,
bugprone-*, bugprone-*,
cppcoreguidelines-*' cppcoreguidelines-*,
-performance-avoid-endl -performance-avoid-endl'

View File

@ -1,9 +1,7 @@
cmake_minimum_required(VERSION 3.10) cmake_minimum_required(VERSION 3.16)
project(sparkle) project(sparkle)
#target_precompile_headers(${PROJECT_NAME} PRIVATE pch.h)
#include(GoogleTest) #include(GoogleTest)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
@ -13,10 +11,15 @@ set(SOURCE sources/main.cpp)
set(LIBS ${CMAKE_SOURCE_DIR}/libs/) set(LIBS ${CMAKE_SOURCE_DIR}/libs/)
set(INCLUDE ${CMAKE_SOURCE_DIR}/include/) set(INCLUDE ${CMAKE_SOURCE_DIR}/include/)
#set(TESTS ${CMAKE_SOURCE_DIR}/tests) #set(TESTS ${CMAKE_SOURCE_DIR}/tests)
#-Werror set(ADDITIONAL_CXX_FLAGS_DEBUG "-march=native -O0 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -fsanitize=address") #-Werror
set(ADDITIONAL_CXX_FLAGS_DEBUG "-march=native -O0 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -fsanitize=address")
set(ADDITIONAL_CXX_FLAGS_RELEASE "-march=native -O2 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -flto=full") set(ADDITIONAL_CXX_FLAGS_RELEASE "-march=native -O2 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -flto=full")
file(GLOB NETWORK_SOURCES libs/network/*.cpp)
find_package(CURL REQUIRED)
find_path(IXWEBSOCKET_INCLUDE_DIR ixwebsocket)
find_library(IXWEBSOCKET_LIBRARIES ixwebsocket)
if(CMAKE_BUILD_TYPE) if(CMAKE_BUILD_TYPE)
if(CMAKE_BUILD_TYPE STREQUAL "Debug") if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DDEBUG) add_definitions(-DDEBUG)
@ -33,13 +36,6 @@ elseif(NOT CMAKE_BUILD_TYPE)
message(STATUS "cflags: ${CMAKE_CXX_FLAGS_RELEASE}") message(STATUS "cflags: ${CMAKE_CXX_FLAGS_RELEASE}")
endif() endif()
file(GLOB NETWORK_SOURCES libs/network/*.cpp)
file(GLOB WEBSOCKET_SOURCES libs/gateway/*.cpp)
find_package(CURL REQUIRED)
find_path(IXWEBSOCKET_INCLUDE_DIR ixwebsocket)
find_library(IXWEBSOCKET_LIBRARIES ixwebsocket)
if(NOT IXWEBSOCKET_INCLUDE_DIR OR NOT IXWEBSOCKET_LIBRARIES) if(NOT IXWEBSOCKET_INCLUDE_DIR OR NOT IXWEBSOCKET_LIBRARIES)
message(FATAL_ERROR "ixwebsocket not found") message(FATAL_ERROR "ixwebsocket not found")
endif() endif()
@ -51,7 +47,9 @@ endif()
message(STATUS "Current compiler: ${CMAKE_CXX_COMPILER}") message(STATUS "Current compiler: ${CMAKE_CXX_COMPILER}")
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
add_executable(${PROJECT_NAME} ${SOURCE} ${NETWORK_SOURCES} ${WEBSOCKET_SOURCES}) add_executable(${PROJECT_NAME} ${SOURCE} ${NETWORK_SOURCES})
target_precompile_headers(${PROJECT_NAME} PRIVATE ${INCLUDE}pch.hpp)
target_include_directories(${PROJECT_NAME} PRIVATE target_include_directories(${PROJECT_NAME} PRIVATE
${LIBS} ${LIBS}

View File

@ -1,11 +1,7 @@
#ifndef INCLUDE_INCLUDES_HPP_ #ifndef INCLUDE_INCLUDES_HPP_
#define INCLUDE_INCLUDES_HPP_ #define INCLUDE_INCLUDES_HPP_
#include <utils/types.hpp> #include <utils/types.hpp>
#include <nlohmann/json.hpp>
#include <utils/log.hpp> #include <utils/log.hpp>
#include <utils/enums.hpp> #include <utils/enums.hpp>
#include <utils/functions.hpp> #include <utils/functions.hpp>
#include <cxxopts.hpp>
#include <iostream>
#include <string>
#endif #endif

12
include/pch.hpp Normal file
View File

@ -0,0 +1,12 @@
#ifndef INCLUDE_PCH_HPP_
#define INCLUDE_PCH_HPP_
#include <iostream>
#include <string>
#include <functional>
#include <algorithm>
#include <utils/types.hpp>
#include <utils/log.hpp>
#include <utils/enums.hpp>
#include <utils/functions.hpp>
#include <nlohmann/json.hpp>
#endif

View File

@ -30,7 +30,7 @@ public:
const nlohmann::json& data; const nlohmann::json& data;
NetworkManager& req; NetworkManager& req;
Api(const nlohmann::json& json) : data(json), req(NetworkManager::getInstance()) {}; Api(const nlohmann::json& json) : data(json), req(NetworkManager::getInstance()) {};
unsigned long latency() const { _nodiscard auto latency() const -> unsigned long {
return req.getLatency(); return req.getLatency();
} }
}; };

View File

@ -2,7 +2,6 @@
NetworkManager::NetworkManager() : curl(curl_easy_init()), res(CURLE_OK), web(WebSocket::getInstance()) { NetworkManager::NetworkManager() : curl(curl_easy_init()), res(CURLE_OK), web(WebSocket::getInstance()) {
Log::create(INFO, NETWORK, "Network init"); Log::create(INFO, NETWORK, "Network init");
curl_global_init(CURL_GLOBAL_DEFAULT); curl_global_init(CURL_GLOBAL_DEFAULT);
if (!curl) { if (!curl) {
Log::create(CRITICAL, NETWORK, "Failed to initialize CURL"); Log::create(CRITICAL, NETWORK, "Failed to initialize CURL");
abort(); abort();

View File

@ -8,14 +8,14 @@ private:
CURL* curl; CURL* curl;
CURLcode res; CURLcode res;
WebSocket& web; WebSocket& web;
auto operator=(const NetworkManager&) -> NetworkManager& = delete;
auto operator=(NetworkManager&&) -> NetworkManager& = delete;
NetworkManager(NetworkManager&&) = delete;
NetworkManager(const NetworkManager&) = delete;
NetworkManager(); NetworkManager();
~NetworkManager(); ~NetworkManager();
static auto WriteCallback(void* contents, unsigned long size, unsigned long nmemb, void* userp) -> unsigned long; static auto WriteCallback(void* contents, unsigned long size, unsigned long nmemb, void* userp) -> unsigned long;
public: public:
auto operator=(const NetworkManager&)->NetworkManager& = delete;
auto operator=(NetworkManager&&)->NetworkManager& = delete;
NetworkManager(NetworkManager&&) = delete;
NetworkManager(const NetworkManager&) = delete;
static auto getInstance() -> NetworkManager&; static auto getInstance() -> NetworkManager&;
[[nodiscard]] auto getLatency() const -> unsigned long; [[nodiscard]] auto getLatency() const -> unsigned long;
auto request(const std::string& method, const std::string& path, const std::string& data = "") -> std::string; auto request(const std::string& method, const std::string& path, const std::string& data = "") -> std::string;

View File

@ -6,7 +6,7 @@ void EventEmitter::emit(const std::string& event, const nlohmann::json& data) {
}); });
} }
} }
void EventEmitter::getEvents() { void EventEmitter::getEvents() const {
Log::create(CRITICAL, WEBSOCKET, "Event list"); Log::create(CRITICAL, WEBSOCKET, "Event list");
for (const auto& handler : handlers) { for (const auto& handler : handlers) {
Log::create(INFO, WEBSOCKET, handler.first); Log::create(INFO, WEBSOCKET, handler.first);

View File

@ -11,7 +11,7 @@ private:
protected: protected:
void emit(const std::string& event, const nlohmann::json& data); void emit(const std::string& event, const nlohmann::json& data);
public: public:
void getEvents(); void getEvents() const;
void start() const; void start() const;
void on(const std::string& event, eventHandlers handler); void on(const std::string& event, eventHandlers handler);
void once(const std::string& event, const eventHandlers& handler); void once(const std::string& event, const eventHandlers& handler);

View File

@ -2,87 +2,87 @@
#define UTILS_EVENTS_HPP_ #define UTILS_EVENTS_HPP_
#include <string> #include <string>
struct GatewayEvents { struct GatewayEvents {
static constexpr const char* APPLICATION_COMMAND_PERMISSIONS_UPDATE = "APPLICATION_COMMAND_PERMISSIONS_UPDATE"; static inline constexpr char* APPLICATION_COMMAND_PERMISSIONS_UPDATE = "APPLICATION_COMMAND_PERMISSIONS_UPDATE";
static constexpr const char* AUTO_MODERATION_ACTION_EXECUTION = "AUTO_MODERATION_ACTION_EXECUTION"; static inline constexpr char* AUTO_MODERATION_ACTION_EXECUTION = "AUTO_MODERATION_ACTION_EXECUTION";
static constexpr const char* AUTO_MODERATION_RULE_CREATE = "AUTO_MODERATION_RULE_CREATE"; static inline constexpr char* AUTO_MODERATION_RULE_CREATE = "AUTO_MODERATION_RULE_CREATE";
static constexpr const char* AUTO_MODERATION_RULE_DELETE = "AUTO_MODERATION_RULE_DELETE"; static inline constexpr char* AUTO_MODERATION_RULE_DELETE = "AUTO_MODERATION_RULE_DELETE";
static constexpr const char* AUTO_MODERATION_RULE_UPDATE = "AUTO_MODERATION_RULE_UPDATE"; static inline constexpr char* AUTO_MODERATION_RULE_UPDATE = "AUTO_MODERATION_RULE_UPDATE";
static constexpr const char* CHANNEL_CREATE = "CHANNEL_CREATE"; static inline constexpr char* CHANNEL_CREATE = "CHANNEL_CREATE";
static constexpr const char* CHANNEL_DELETE = "CHANNEL_DELETE"; static inline constexpr char* CHANNEL_DELETE = "CHANNEL_DELETE";
static constexpr const char* CHANNEL_PINS_UPDATE = "CHANNEL_PINS_UPDATE"; static inline constexpr char* CHANNEL_PINS_UPDATE = "CHANNEL_PINS_UPDATE";
static constexpr const char* CHANNEL_UPDATE = "CHANNEL_UPDATE"; static inline constexpr char* CHANNEL_UPDATE = "CHANNEL_UPDATE";
static constexpr const char* ENTITLEMENT_CREATE = "ENTITLEMENT_CREATE"; static inline constexpr char* ENTITLEMENT_CREATE = "ENTITLEMENT_CREATE";
static constexpr const char* ENTITLEMENT_DELETE = "ENTITLEMENT_DELETE"; static inline constexpr char* ENTITLEMENT_DELETE = "ENTITLEMENT_DELETE";
static constexpr const char* ENTITLEMENT_UPDATE = "ENTITLEMENT_UPDATE"; static inline constexpr char* ENTITLEMENT_UPDATE = "ENTITLEMENT_UPDATE";
static constexpr const char* GUILD_AUDIT_LOG_ENTRY_CREATE = "GUILD_AUDIT_LOG_ENTRY_CREATE"; static inline constexpr char* GUILD_AUDIT_LOG_ENTRY_CREATE = "GUILD_AUDIT_LOG_ENTRY_CREATE";
static constexpr const char* GUILD_BAN_ADD = "GUILD_BAN_ADD"; static inline constexpr char* GUILD_BAN_ADD = "GUILD_BAN_ADD";
static constexpr const char* GUILD_BAN_REMOVE = "GUILD_BAN_REMOVE"; static inline constexpr char* GUILD_BAN_REMOVE = "GUILD_BAN_REMOVE";
static constexpr const char* GUILD_CREATE = "GUILD_CREATE"; static inline constexpr char* GUILD_CREATE = "GUILD_CREATE";
static constexpr const char* GUILD_DELETE = "GUILD_DELETE"; static inline constexpr char* GUILD_DELETE = "GUILD_DELETE";
static constexpr const char* GUILD_EMOJIS_UPDATE = "GUILD_EMOJIS_UPDATE"; static inline constexpr char* GUILD_EMOJIS_UPDATE = "GUILD_EMOJIS_UPDATE";
static constexpr const char* GUILD_INTEGRATIONS_UPDATE = "GUILD_INTEGRATIONS_UPDATE"; static inline constexpr char* GUILD_INTEGRATIONS_UPDATE = "GUILD_INTEGRATIONS_UPDATE";
static constexpr const char* GUILD_MEMBER_ADD = "GUILD_MEMBER_ADD"; static inline constexpr char* GUILD_MEMBER_ADD = "GUILD_MEMBER_ADD";
static constexpr const char* GUILD_MEMBER_REMOVE = "GUILD_MEMBER_REMOVE"; static inline constexpr char* GUILD_MEMBER_REMOVE = "GUILD_MEMBER_REMOVE";
static constexpr const char* GUILD_MEMBERS_CHUNK = "GUILD_MEMBERS_CHUNK"; static inline constexpr char* GUILD_MEMBERS_CHUNK = "GUILD_MEMBERS_CHUNK";
static constexpr const char* GUILD_MEMBER_UPDATE = "GUILD_MEMBER_UPDATE"; static inline constexpr char* GUILD_MEMBER_UPDATE = "GUILD_MEMBER_UPDATE";
static constexpr const char* GUILD_ROLE_CREATE = "GUILD_ROLE_CREATE"; static inline constexpr char* GUILD_ROLE_CREATE = "GUILD_ROLE_CREATE";
static constexpr const char* GUILD_ROLE_DELETE = "GUILD_ROLE_DELETE"; static inline constexpr char* GUILD_ROLE_DELETE = "GUILD_ROLE_DELETE";
static constexpr const char* GUILD_ROLE_UPDATE = "GUILD_ROLE_UPDATE"; static inline constexpr char* GUILD_ROLE_UPDATE = "GUILD_ROLE_UPDATE";
static constexpr const char* GUILD_SCHEDULED_EVENT_CREATE = "GUILD_SCHEDULED_EVENT_CREATE"; static inline constexpr char* GUILD_SCHEDULED_EVENT_CREATE = "GUILD_SCHEDULED_EVENT_CREATE";
static constexpr const char* GUILD_SCHEDULED_EVENT_DELETE = "GUILD_SCHEDULED_EVENT_DELETE"; static inline constexpr char* GUILD_SCHEDULED_EVENT_DELETE = "GUILD_SCHEDULED_EVENT_DELETE";
static constexpr const char* GUILD_SCHEDULED_EVENT_UPDATE = "GUILD_SCHEDULED_EVENT_UPDATE"; static inline constexpr char* GUILD_SCHEDULED_EVENT_UPDATE = "GUILD_SCHEDULED_EVENT_UPDATE";
static constexpr const char* GUILD_SCHEDULED_EVENT_USER_REMOVE = "GUILD_SCHEDULED_EVENT_USER_REMOVE"; static inline constexpr char* GUILD_SCHEDULED_EVENT_USER_REMOVE = "GUILD_SCHEDULED_EVENT_USER_REMOVE";
static constexpr const char* GUILD_SOUNDBOARD_SOUND_CREATE = "GUILD_SOUNDBOARD_SOUND_CREATE"; static inline constexpr char* GUILD_SOUNDBOARD_SOUND_CREATE = "GUILD_SOUNDBOARD_SOUND_CREATE";
static constexpr const char* GUILD_SOUNDBOARD_SOUND_DELETE = "GUILD_SOUNDBOARD_SOUND_DELETE"; static inline constexpr char* GUILD_SOUNDBOARD_SOUND_DELETE = "GUILD_SOUNDBOARD_SOUND_DELETE";
static constexpr const char* GUILD_SOUNDBOARD_SOUNDS_UPDATE = "GUILD_SOUNDBOARD_SOUNDS_UPDATE"; static inline constexpr char* GUILD_SOUNDBOARD_SOUNDS_UPDATE = "GUILD_SOUNDBOARD_SOUNDS_UPDATE";
static constexpr const char* GUILD_SOUNDBOARD_SOUND_UPDATE = "GUILD_SOUNDBOARD_SOUND_UPDATE"; static inline constexpr char* GUILD_SOUNDBOARD_SOUND_UPDATE = "GUILD_SOUNDBOARD_SOUND_UPDATE";
static constexpr const char* SOUNDBOARD_SOUNDS = "SOUNDBOARD_SOUNDS"; static inline constexpr char* SOUNDBOARD_SOUNDS = "SOUNDBOARD_SOUNDS";
static constexpr const char* GUILD_STICKERS_UPDATE = "GUILD_STICKERS_UPDATE"; static inline constexpr char* GUILD_STICKERS_UPDATE = "GUILD_STICKERS_UPDATE";
static constexpr const char* GUILD_UPDATE = "GUILD_UPDATE"; static inline constexpr char* GUILD_UPDATE = "GUILD_UPDATE";
static constexpr const char* INTEGRATION_CREATE = "INTEGRATION_CREATE"; static inline constexpr char* INTEGRATION_CREATE = "INTEGRATION_CREATE";
static constexpr const char* INTEGRATION_DELETE = "INTEGRATION_DELETE"; static inline constexpr char* INTEGRATION_DELETE = "INTEGRATION_DELETE";
static constexpr const char* INTEGRATION_UPDATE = "INTEGRATION_UPDATE"; static inline constexpr char* INTEGRATION_UPDATE = "INTEGRATION_UPDATE";
static constexpr const char* INVITE_CREATE = "INVITE_CREATE"; static inline constexpr char* INVITE_CREATE = "INVITE_CREATE";
static constexpr const char* INVITE_DELETE = "INVITE_DELETE"; static inline constexpr char* INVITE_DELETE = "INVITE_DELETE";
static constexpr const char* MESSAGE_CREATE = "MESSAGE_CREATE"; static inline constexpr char* MESSAGE_CREATE = "MESSAGE_CREATE";
static constexpr const char* MESSAGE_DELETE = "MESSAGE_DELETE"; static inline constexpr char* MESSAGE_DELETE = "MESSAGE_DELETE";
static constexpr const char* MESSAGE_DELETE_BULK = "MESSAGE_DELETE_BULK"; static inline constexpr char* MESSAGE_DELETE_BULK = "MESSAGE_DELETE_BULK";
static constexpr const char* MESSAGE_POLL_VOTE_ADD = "MESSAGE_POLL_VOTE_ADD"; static inline constexpr char* MESSAGE_POLL_VOTE_ADD = "MESSAGE_POLL_VOTE_ADD";
static constexpr const char* MESSAGE_POLL_VOTE_REMOVE = "MESSAGE_POLL_VOTE_REMOVE"; static inline constexpr char* MESSAGE_POLL_VOTE_REMOVE = "MESSAGE_POLL_VOTE_REMOVE";
static constexpr const char* MESSAGE_REACTION_ADD = "MESSAGE_REACTION_ADD"; static inline constexpr char* MESSAGE_REACTION_ADD = "MESSAGE_REACTION_ADD";
static constexpr const char* MESSAGE_REACTION_REMOVE = "MESSAGE_REACTION_REMOVE"; static inline constexpr char* MESSAGE_REACTION_REMOVE = "MESSAGE_REACTION_REMOVE";
static constexpr const char* MESSAGE_REACTION_REMOVE_ALL = "MESSAGE_REACTION_REMOVE_ALL"; static inline constexpr char* MESSAGE_REACTION_REMOVE_ALL = "MESSAGE_REACTION_REMOVE_ALL";
static constexpr const char* MESSAGE_REACTION_REMOVE_EMOJI = "MESSAGE_REACTION_REMOVE_EMOJI"; static inline constexpr char* MESSAGE_REACTION_REMOVE_EMOJI = "MESSAGE_REACTION_REMOVE_EMOJI";
static constexpr const char* MESSAGE_UPDATE = "MESSAGE_UPDATE"; static inline constexpr char* MESSAGE_UPDATE = "MESSAGE_UPDATE";
static constexpr const char* PRESENCE_UPDATE = "PRESENCE_UPDATE"; static inline constexpr char* PRESENCE_UPDATE = "PRESENCE_UPDATE";
static constexpr const char* READY = "READY"; static inline constexpr char* READY = "READY";
static constexpr const char* RESUMED = "RESUMED"; static inline constexpr char* RESUMED = "RESUMED";
static constexpr const char* STAGE_INSTANCE_CREATE = "STAGE_INSTANCE_CREATE"; static inline constexpr char* STAGE_INSTANCE_CREATE = "STAGE_INSTANCE_CREATE";
static constexpr const char* STAGE_INSTANCE_DELETE = "STAGE_INSTANCE_DELETE"; static inline constexpr char* STAGE_INSTANCE_DELETE = "STAGE_INSTANCE_DELETE";
static constexpr const char* STAGE_INSTANCE_UPDATE = "STAGE_INSTANCE_UPDATE"; static inline constexpr char* STAGE_INSTANCE_UPDATE = "STAGE_INSTANCE_UPDATE";
static constexpr const char* SUBSCRIPTION_CREATE = "SUBSCRIPTION_CREATE"; static inline constexpr char* SUBSCRIPTION_CREATE = "SUBSCRIPTION_CREATE";
static constexpr const char* SUBSCRIPTION_DELETE = "SUBSCRIPTION_DELETE"; static inline constexpr char* SUBSCRIPTION_DELETE = "SUBSCRIPTION_DELETE";
static constexpr const char* SUBSCRIPTION_UPDATE = "SUBSCRIPTION_UPDATE"; static inline constexpr char* SUBSCRIPTION_UPDATE = "SUBSCRIPTION_UPDATE";
static constexpr const char* THREAD_CREATE = "THREAD_CREATE"; static inline constexpr char* THREAD_CREATE = "THREAD_CREATE";
static constexpr const char* THREAD_DELETE = "THREAD_DELETE"; static inline constexpr char* THREAD_DELETE = "THREAD_DELETE";
static constexpr const char* THREAD_LIST_SYNC = "THREAD_LIST_SYNC"; static inline constexpr char* THREAD_LIST_SYNC = "THREAD_LIST_SYNC";
static constexpr const char* THREAD_MEMBERS_UPDATE = "THREAD_MEMBERS_UPDATE"; static inline constexpr char* THREAD_MEMBERS_UPDATE = "THREAD_MEMBERS_UPDATE";
static constexpr const char* THREAD_MEMBER_UPDATE = "THREAD_MEMBER_UPDATE"; static inline constexpr char* THREAD_MEMBER_UPDATE = "THREAD_MEMBER_UPDATE";
static constexpr const char* THREAD_UPDATE = "THREAD_UPDATE"; static inline constexpr char* THREAD_UPDATE = "THREAD_UPDATE";
static constexpr const char* TYPING_START = "TYPING_START"; static inline constexpr char* TYPING_START = "TYPING_START";
static constexpr const char* USER_UPDATE = "USER_UPDATE"; static inline constexpr char* USER_UPDATE = "USER_UPDATE";
static constexpr const char* VOICE_CHANNEL_EFFECT_SEND = "VOICE_CHANNEL_EFFECT_SEND"; static inline constexpr char* VOICE_CHANNEL_EFFECT_SEND = "VOICE_CHANNEL_EFFECT_SEND";
static constexpr const char* VOICE_SERVER_UPDATE = "VOICE_SERVER_UPDATE"; static inline constexpr char* VOICE_SERVER_UPDATE = "VOICE_SERVER_UPDATE";
static constexpr const char* VOICE_STATE_UPDATE = "VOICE_STATE_UPDATE"; static inline constexpr char* VOICE_STATE_UPDATE = "VOICE_STATE_UPDATE";
static constexpr const char* WEBHOOKS_UPDATE = "WEBHOOKS_UPDATE"; static inline constexpr char* WEBHOOKS_UPDATE = "WEBHOOKS_UPDATE";
}; };
struct HttpMethods { struct HttpMethods {
static constexpr const char* POST = "POST"; static inline constexpr char* POST = "POST";
static constexpr const char* GET = "GET"; static inline constexpr char* GET = "GET";
static constexpr const char* PATCH = "PATCH"; static inline constexpr char* PATCH = "PATCH";
static constexpr const char* DELETE = "DELETE"; static inline constexpr char* DELETE = "DELETE";
static constexpr const char* PUT = "PUT"; static inline constexpr char* PUT = "PUT";
static constexpr const char* OPTIONS = "OPTIONS"; static inline constexpr char* OPTIONS = "OPTIONS";
}; };
struct ApiVersion { struct ApiVersion {
static const inline std::string api = "/api/"; static const inline std::string api = "/api/";

View File

@ -54,7 +54,7 @@ private:
default: return "UNKNOWN"; default: return "UNKNOWN";
} }
} }
static auto str(const type& t) -> std::string { static auto str(const type& t) noexcept -> std::string {
switch (t) { switch (t) {
case WEBSOCKET: return "WEBSOCKET"; case WEBSOCKET: return "WEBSOCKET";
case NETWORK: return "NETWORK"; case NETWORK: return "NETWORK";

View File

@ -1,5 +1,6 @@
#include <api.hpp> #include <api.hpp>
#include <includes.hpp> #include <includes.hpp>
#include <cxxopts.hpp>
int main(int argc, char* argv[]) { int main(int argc, char* argv[]) {
cxxopts::Options options("sparkle", "WIP discord bot library in C++"); cxxopts::Options options("sparkle", "WIP discord bot library in C++");
options.add_options() options.add_options()