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; }