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