D++ (DPP)  10.0.30
C++ Discord API Bot Library
utility.cpp File Reference
#include <dpp/utility.h>
#include <dpp/stringops.h>
#include <dpp/exception.h>
#include <dpp/version.h>
#include <ctime>
#include <iomanip>
#include <sstream>
#include <thread>
#include <functional>
#include <chrono>
#include <algorithm>
#include <fstream>
#include <streambuf>
#include <array>
#include <dpp/cluster.h>
#include <dpp/dispatcher.h>
#include <dpp/message.h>
#include <dpp/discordevents.h>
Include dependency graph for utility.cpp:

Namespaces

 dpp
 The main namespace for D++ functions.
 
 dpp::utility
 Utility helper functions, generally for logging, running programs, time/date manipulation, etc.
 
 dpp::utility::anonymous_namespace{utility.cpp}
 

Functions

std::string DPP_EXPORT dpp::utility::avatar_size (uint32_t size)
 Get the url query parameter for the cdn endpoint. More...
 
std::string DPP_EXPORT dpp::utility::bot_invite_url (const snowflake bot_id, const uint64_t permissions=0, const std::vector< std::string > &scopes={"bot", "applications.commands"})
 Create a bot invite. More...
 
std::string DPP_EXPORT dpp::utility::bytes (uint64_t c)
 Convert a byte count to display value. More...
 
std::string DPP_EXPORT dpp::utility::cdn_endpoint_url (const std::vector< image_type > &allowed_formats, const std::string &path_without_extension, const dpp::image_type format, uint16_t size, bool prefer_animated=false, bool is_animated=false)
 Helper function to easily create discord's cdn endpoint urls. More...
 
std::string DPP_EXPORT dpp::utility::cdn_endpoint_url_hash (const std::vector< image_type > &allowed_formats, const std::string &path_without_extension, const std::string &hash, const dpp::image_type format, uint16_t size, bool prefer_animated=false, bool is_animated=false)
 Helper function to easily create discord's cdn endpoint urls. More...
 
std::string DPP_EXPORT dpp::utility::cdn_endpoint_url_sticker (snowflake sticker_id, sticker_format format)
 Helper function to easily create discord's cdn endpoint urls (specialised for stickers) More...
 
std::string DPP_EXPORT dpp::utility::channel_mention (const snowflake &id)
 Create a mentionable channel. More...
 
std::string DPP_EXPORT dpp::utility::channel_url (const snowflake &guild_id, const snowflake &channel_id)
 Create a URL for message. More...
 
uint32_t DPP_EXPORT dpp::utility::cmyk (double c, double m, double y, double k)
 Convert doubles to CMYK for sending in embeds. More...
 
uint32_t DPP_EXPORT dpp::utility::cmyk (int c, int m, int y, int k)
 Convert ints to CMYK for sending in embeds. More...
 
std::unique_ptr< std::byte[]> dpp::utility::anonymous_namespace{utility.cpp}::copy_data (const std::byte *data, size_t size)
 
template<typename Range >
std::unique_ptr< std::byte[]> dpp::utility::anonymous_namespace{utility.cpp}::copy_data (Range &&range)
 
std::string DPP_EXPORT dpp::utility::current_date_time ()
 Returns current date and time. More...
 
std::string DPP_EXPORT dpp::utility::debug_dump (uint8_t *data, size_t length)
 Output hex values of a section of memory for debugging. More...
 
std::string DPP_EXPORT dpp::utility::emoji_mention (std::string_view name, snowflake id, bool is_animated=false)
 Create a mentionable emoji. More...
 
void DPP_EXPORT dpp::utility::exec (const std::string &cmd, std::vector< std::string > parameters={}, cmd_result_t callback={})
 Run a commandline program asynchronously. More...
 
template<typename T >
std::enable_if_t< std::is_same_v< T, sticker_format >, std::string > dpp::utility::file_extension (T format)
 
template<typename T >
std::enable_if_t< std::is_same_v< T, image_type >, std::string > dpp::utility::file_extension (T type)
 
template std::string dpp::utility::file_extension< image_type > (image_type t)
 
template std::string dpp::utility::file_extension< sticker_format > (sticker_format t)
 
std::string DPP_EXPORT dpp::utility::guild_navigation (const snowflake guild_id, guild_navigation_type gnt)
 Create a mentionable guild navigation (used in a message). More...
 
bool DPP_EXPORT dpp::utility::has_voice ()
 Returns true if D++ was built with voice support. More...
 
uint32_t DPP_EXPORT dpp::utility::hsl (double h, double s, double l)
 Convert doubles to HSL for sending in embeds. More...
 
uint32_t DPP_EXPORT dpp::utility::hsl (int h, int s, int l)
 Convert ints to HSL for sending in embeds. More...
 
bool DPP_EXPORT dpp::utility::is_coro_enabled ()
 Returns true if D++ was built with coroutine support. More...
 
command_completion_event_t DPP_EXPORT dpp::utility::log_error ()
 The default callback handler for API calls. More...
 
std::string DPP_EXPORT dpp::utility::loglevel (dpp::loglevel in)
 Convert a dpp::loglevel enum value to a string. More...
 
std::string DPP_EXPORT dpp::utility::make_url_parameters (const std::map< std::string, std::string > &parameters)
 Build a URL parameter string e.g. More...
 
std::string DPP_EXPORT dpp::utility::make_url_parameters (const std::map< std::string, uint64_t > &parameters)
 Build a URL parameter string e.g. More...
 
std::string DPP_EXPORT dpp::utility::markdown_escape (const std::string &text, bool escape_code_blocks=false)
 Escapes Discord's markdown sequences in a string. More...
 
std::string DPP_EXPORT dpp::utility::message_url (const snowflake &guild_id, const snowflake &channel_id, const snowflake &message_id)
 Create a URL for message. More...
 
template<typename T >
std::enable_if_t< std::is_same_v< T, sticker_format >, std::string > dpp::utility::mime_type (T format)
 
template<typename T >
std::enable_if_t< std::is_same_v< T, image_type >, std::string > dpp::utility::mime_type (T type)
 
template std::string dpp::utility::mime_type< image_type > (image_type t)
 
template std::string dpp::utility::mime_type< sticker_format > (sticker_format t)
 
std::string DPP_EXPORT dpp::utility::read_file (const std::string &filename)
 Read a whole file into a std::string. More...
 
uint32_t DPP_EXPORT dpp::utility::rgb (double red, double green, double blue)
 Convert doubles to RGB for sending in embeds. More...
 
uint32_t DPP_EXPORT dpp::utility::rgb (int red, int green, int blue)
 Convert ints to RGB for sending in embeds. More...
 
std::string DPP_EXPORT dpp::utility::role_mention (const snowflake &id)
 Create a mentionable role. More...
 
void DPP_EXPORT dpp::utility::set_thread_name (const std::string &name)
 Set the name of the current thread for debugging and statistical reporting. More...
 
std::string DPP_EXPORT dpp::utility::slashcommand_mention (snowflake command_id, const std::string &command_name, const std::string &subcommand="")
 Create a mentionable slashcommand (used in a message). More...
 
std::string DPP_EXPORT dpp::utility::slashcommand_mention (snowflake command_id, const std::string &command_name, const std::string &subcommand_group, const std::string &subcommand)
 Create a mentionable slashcommand (used in a message). More...
 
std::string DPP_EXPORT dpp::utility::thread_url (const snowflake &guild_id, const snowflake &thread_id)
 Create a URL for message. More...
 
double DPP_EXPORT dpp::utility::time_f ()
 Return the current time with fractions of seconds. More...
 
std::string DPP_EXPORT dpp::utility::timestamp (time_t ts, time_format tf=tf_short_datetime)
 Return a mentionable timestamp (used in a message). More...
 
std::vector< std::string > DPP_EXPORT dpp::utility::tokenize (std::string const &in, const char *sep="\r\n")
 Split (tokenize) a string into a vector, using the given separators. More...
 
std::string DPP_EXPORT dpp::utility::url_encode (const std::string &value)
 Encodes a url parameter similar to php urlencode() More...
 
std::string DPP_EXPORT dpp::utility::user_mention (const snowflake &id)
 Create a mentionable user. More...
 
std::string DPP_EXPORT dpp::utility::user_url (const snowflake &user_id)
 Create a URL for message. More...
 
size_t DPP_EXPORT dpp::utility::utf8len (std::string_view str)
 Returns the length of a UTF-8 string in codepoints. More...
 
std::string DPP_EXPORT dpp::utility::utf8substr (std::string_view str, size_t start, size_t length)
 Return substring of a UTF-8 encoded string in codepoints. More...
 
std::string_view DPP_EXPORT dpp::utility::utf8subview (std::string_view str, size_t start, size_t length)
 Return subview of a UTF-8 encoded string in codepoints. More...
 
std::string DPP_EXPORT dpp::utility::validate (const std::string &value, size_t _min, size_t _max, const std::string &exception_message)
 Validate a string value In the event the length of the string is less than _min, then an exception of type dpp:length_exception will be thrown. More...
 
std::string DPP_EXPORT dpp::utility::version ()
 Returns the library's version string. More...
 
avx_type_t DPP_EXPORT dpp::utility::voice_avx ()
 Returns an enum value indicating which AVX instruction set is used for mixing received voice data, if any. More...
 

Variables

std::function< void(const dpp::log_t &)> DPP_EXPORT dpp::utility::cout_logger ()
 Get a default logger that outputs to std::cout. More...
 
static const char * dpp::utility::hex = "0123456789ABCDEF"
 
constexpr int dpp::utility::max_cdn_image_size {4096}
 
constexpr int dpp::utility::min_cdn_image_size {16}