public async Task <byte[]> GetChannelPictureAsync(string userId) { try { var forceRefreshLogo = userId.Contains("_"); if (forceRefreshLogo) { userId = userId.Split('_')[1]; } else { if (memoryCache != null && memoryCache.TryGetValue("logo_" + userId, out var logoData) && logoData is byte[] data) { return(data); } } var twitch = new TwitchRequests(clientId: settings.TwitchClientId, clientSecret: settings.TwitchClientSecret); var profile = await twitch.Kraken_GetUserAsync(userId); if (profile != null) { using (var wc = new WebClient()) { var binaryData = await wc.DownloadDataTaskAsync(new Uri(profile.logo)); return(memoryCache.Set("logo_" + userId, binaryData)); } } } catch { } return(null); }
public async Task <byte[]> GetClanLogoAsync(string userId) { try { string logoUrl = null; var forceRefreshLogo = userId.Contains("_"); if (forceRefreshLogo) { userId = userId.Split('_')[1]; var user = gameData.GetUserByTwitchId(userId); if (user != null) { var clan = gameData.GetClanByUser(user.Id); if (clan != null && clan.Logo != null && clan.Logo.Contains("/api/twitch/logo/")) { clan.Logo = null; } logoUrl = clan?.Logo; } } else { if (memoryCache != null && memoryCache.TryGetValue("clan_logo_" + userId, out var logoData) && logoData is byte[] data) { return(data); } } if (string.IsNullOrEmpty(logoUrl)) { var twitch = new TwitchRequests(clientId: settings.TwitchClientId, clientSecret: settings.TwitchClientSecret); var profile = await twitch.Kraken_GetUserAsync(userId); if (profile != null) { logoUrl = profile.logo; } } if (!string.IsNullOrEmpty(logoUrl)) { using (var wc = new WebClient()) { var binaryData = await wc.DownloadDataTaskAsync(new Uri(logoUrl)); return(memoryCache.Set("clan_logo_" + userId, binaryData)); } } } catch { } return(null); }