From f909f98e1ab243cfe9c18f902a13ec6a8e3d4e2e Mon Sep 17 00:00:00 2001 From: radius Date: Wed, 17 Oct 2018 10:32:29 -0500 Subject: [PATCH] [discord] download our own avatar to use in-menu --- discord/discord.c | 69 ++++++++++++++++++++++++----------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/discord/discord.c b/discord/discord.c index 2a2e1f2782..4c2d482cfe 100644 --- a/discord/discord.c +++ b/discord/discord.c @@ -66,12 +66,47 @@ static char cdn_url[] = "https://cdn.discordapp.com/avatars"; DiscordRichPresence discord_presence; +static bool discord_download_avatar(const char* user_id, const char* avatar_id) +{ + static char url[PATH_MAX_LENGTH]; + static char url_encoded[PATH_MAX_LENGTH]; + static char fullpath[PATH_MAX_LENGTH]; + + static char buf[PATH_MAX_LENGTH]; + + file_transfer_t *transf = NULL; + + fill_pathname_application_special(buf, + sizeof(buf), + APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_DISCORD_AVATARS); + fill_pathname_join(fullpath, buf, avatar_id, sizeof(fullpath)); + + if(filestream_exists(fullpath)) + return true; + else + { + snprintf(url, sizeof(url), "%s/%s/%s.png", cdn_url, user_id, avatar_id); + net_http_urlencode_full(url_encoded, url, sizeof(url_encoded)); + snprintf(buf, sizeof(buf), "%s.png", avatar_id); + + transf = (file_transfer_t*)calloc(1, sizeof(*transf)); + transf->enum_idx = MENU_ENUM_LABEL_CB_DISCORD_AVATAR; + strlcpy(transf->path, buf, sizeof(transf->path)); + + RARCH_LOG("[Discord] downloading avatar from: %s\n", url_encoded); + task_push_http_transfer(url_encoded, true, NULL, cb_generic_download, transf); + + return false; + } +} + static void handle_discord_ready(const DiscordUser* connectedUser) { RARCH_LOG("[Discord] connected to user: %s#%s - avatar id: %s\n", connectedUser->username, connectedUser->discriminator, connectedUser->userId); + discord_download_avatar(connectedUser->userId, connectedUser->avatar); } static void handle_discord_disconnected(int errcode, const char* message) @@ -120,40 +155,6 @@ static void handle_discord_join_response(void *ignore, const char *line) #endif } -static bool discord_download_avatar(const char* user_id, const char* avatar_id) -{ - static char url[PATH_MAX_LENGTH]; - static char url_encoded[PATH_MAX_LENGTH]; - static char fullpath[PATH_MAX_LENGTH]; - - static char buf[PATH_MAX_LENGTH]; - - file_transfer_t *transf = NULL; - - fill_pathname_application_special(buf, - sizeof(buf), - APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_DISCORD_AVATARS); - fill_pathname_join(fullpath, buf, avatar_id, sizeof(fullpath)); - - if(filestream_exists(fullpath)) - return true; - else - { - snprintf(url, sizeof(url), "%s/%s/%s.png", cdn_url, user_id, avatar_id); - net_http_urlencode_full(url_encoded, url, sizeof(url_encoded)); - snprintf(buf, sizeof(buf), "%s.png", avatar_id); - - transf = (file_transfer_t*)calloc(1, sizeof(*transf)); - transf->enum_idx = MENU_ENUM_LABEL_CB_DISCORD_AVATAR; - strlcpy(transf->path, buf, sizeof(transf->path)); - - RARCH_LOG("[Discord] downloading avatar from: %s\n", url_encoded); - task_push_http_transfer(url_encoded, true, NULL, cb_generic_download, transf); - - return false; - } -} - static void handle_discord_join_request(const DiscordUser* request) { static char url[PATH_MAX_LENGTH];