public override Result <IEnumerable <ArdCategoryInfoDto> > GetCategories(string targetUrl, ContinuationToken continuationToken = null) { continuationToken ??= new ContinuationToken() { { _categoryLevel, 0 } }; var currentLevel = continuationToken.GetValueOrDefault(_categoryLevel) as int? ?? 0; Log.Debug($"GetCategories current Level: {currentLevel}"); var json = WebClient.GetWebData <JObject>(targetUrl, proxy: WebRequest.GetSystemWebProxy()); var categoryInfos = currentLevel switch { 0 => CategoryDeserializer.ParseWidgets(json, hasSubCategories: true), // load A - Z 1 => LoadCategoriesWithDetails(json), // load e.g. Abendschau - skip level, (load infos from nextlevel) for each category load url and read synopsis //2 => categoryDeserializer.ParseTeasers(json), // videos... _ => throw new ArgumentOutOfRangeException(), }; var newToken = new ContinuationToken(continuationToken); newToken[_categoryLevel] = currentLevel + 1; return(new Result <IEnumerable <ArdCategoryInfoDto> > { ContinuationToken = newToken, Value = categoryInfos }); }
/// <inheritdoc /> public override Result <IEnumerable <ArdCategoryInfoDto> > GetCategories(string targetUrl, ContinuationToken continuationToken = null) { continuationToken ??= new ContinuationToken() { { _categoryLevel, 0 } }; var currentLevel = continuationToken.GetValueOrDefault(_categoryLevel) as int? ?? 0; var categoryInfos = currentLevel switch { 0 => LastSevenDays(), 1 => PartnerNames(targetUrl), _ => throw new ArgumentOutOfRangeException(), }; var newToken = new ContinuationToken(continuationToken); newToken[_categoryLevel] = currentLevel + 1; return(new Result <IEnumerable <ArdCategoryInfoDto> > { ContinuationToken = newToken, Value = categoryInfos }); }