/// <summary> /// Scrapes the TvMaze API for shows and cast. Will tigger a <seealso cref="SaveCastCommand"/> for all shows /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task HandleAsync(ScrapeTvMazeCommand request) { int page = 1; bool reachedEnd = false; do { PageResult <TvShow> currentTvShows = await tvMazeService.GetShowsAsync(page); if (currentTvShows == null) { // Skip something went wrong on this page, next scrape trigger will do again } else if (currentTvShows.PageExist) { foreach (TvShow tvShow in currentTvShows.Content) { IList <CastMember> cast = await tvMazeService.GetShowCastAsync(tvShow.Id); await saveCastCommandHandler.HandleAsync(new SaveCastCommand(tvShow, cast)); } page++; } else { reachedEnd = true; } }while (!reachedEnd); }
/// <summary> /// Download next bunch of TV shows /// </summary> public async Task <List <TvMazeClient.Dto.Show> > GetNextPageShowsAsync() { var nextPageNumber = await GetNextPageNumberAsync(); var tvMazeShows = await _tvMazeService.GetShowsAsync(nextPageNumber); return(tvMazeShows); }