Beispiel #1
0
        public async Task <IList <MarvelCharacter> > GetCharacterListAsync(ApiFilters filter)
        {
            var url = $"{BASE_URL}/characters?{AuthorizationData}&{filter}";

            var json = await SendHttpRequestAsync <MarvelCharactersListResponse>(url);

            var result = json.Data.Results.Select(hero => new MarvelCharacter
            {
                Id          = hero.Id,
                Name        = hero.Name,
                ImageURL    = $"{hero.Thumbnail.Path}.{hero.Thumbnail.Extension}",
                Description = hero.Description
            })
                         .ToList();

            return(result);
        }
        private async Task <IList <MarvelCharacter> > GetCharactersDataAsync(ApiFilters filter)
        {
            IList <MarvelCharacter> data;

            var key   = $"Heroes_{filter.Offset}_{filter.Limit + filter.Offset}";
            var cache = await cacheService.GetCacheAsync <List <MarvelCharacter> >(key);

            if (cache != null)
            {
                data = cache;
            }
            else
            {
                data = await marvelService.GetCharacterListAsync(filter);

                cacheService.WriteCacheAsync <IList <MarvelCharacter> >(key, data);
            }
            return(data);
        }
        private async Task Init()
        {
            LoadingHeroes = InitLoading = true;

            var filter = new ApiFilters();

            Heroes.Clear();

            var data = await GetCharactersDataAsync(filter);

            while (data.Count > 0)
            {
                data.ForEach(hero => Heroes.Add(hero));
                data.ForEach(hero => allHeroes.Add(hero));
                LoadingHeroes  = false;
                filter.Offset += 50;
                data           = await GetCharactersDataAsync(filter);
            }
            InitLoading = false;
        }