public ResourceFetchContext(IResourceLockerFactory resourceLockerFactory, string url, ISingleResourceFetcher requireReloopFetcher, ISingleResourceFinder root, string entityUrl) { EntityUrl = entityUrl; this.resourceLockerFactory = resourceLockerFactory; Root = root; Url = url; RequireReloopFetcher = requireReloopFetcher; }
private async Task <FetchResult <T> > FetchAsync <T>(string url, Func <ISingleResourceFetcher, IResourceFetchContext, Task <T> > map, string entityUrl, ISingleResourceFetcher requiredReloopFetcher = null) { var ctx = new ResourceFetchContext(resourceLockerFactory, url, requiredReloopFetcher, this, entityUrl); for (int i = 0; i < Count; i++) { var fetcher = this[i]; var val = await map(fetcher, ctx); if (val != null) { return(new FetchResult <T>(ctx, fetcher, val)); } if (ctx.RequireReloop) { return(await FetchAsync(url, map, entityUrl, fetcher)); } } return(default);
public FetchChapterIdentity(string url, string entityUrl) { Url = url; EntityUrl = entityUrl; ReloopFetcher = null; }
public FetchResult(IResourceFetchContext resourceFetchContext, ISingleResourceFetcher triggerFetcher, T value) { ResourceFetchContext = resourceFetchContext; TriggerFetcher = triggerFetcher; Value = value; }
public FetchChapterIdentity(string url, string entityUrl, ISingleResourceFetcher fetcher) { Url = url; EntityUrl = entityUrl; ReloopFetcher = fetcher; }