private async Task<RedirectionResolution> EvaluatePodcastFeedAsync( Uri podcastUri, IUriResolution uriResolver) { var previouslyTriedUris = new List<Uri>(); for(var i = 0; i < MaximumDepth; i++) { PodcastFeed feed; using (var stream = await uriResolver.GetStreamAsync(podcastUri)) { feed = await PodcastFeed.LoadFeedAsync(stream).ConfigureAwait(false); } if (feed.ITunes.NewFeedUrl == null) { return new RedirectionResolution( location: podcastUri, feed: feed); } previouslyTriedUris.Add(podcastUri); podcastUri = feed.ITunes.NewFeedUrl; } throw new RedirectResolutionMaxDepthExceededException( maximumDepth: MaximumDepth, redirections: previouslyTriedUris); }
public void InitTest() { _uriResolution = new TestFeedResolution("TestFeeds"); }
public Task<RedirectionResolution> ResolveUri(Uri location, IUriResolution uriResolver) { return EvaluatePodcastFeedAsync(location, uriResolver); }