コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }