Exemple #1
0
 public ResourceFetchContext(IResourceLockerFactory resourceLockerFactory,
                             string url,
                             ISingleResourceFetcher requireReloopFetcher,
                             ISingleResourceFinder root,
                             string entityUrl)
 {
     EntityUrl = entityUrl;
     this.resourceLockerFactory = resourceLockerFactory;
     Root = root;
     Url  = url;
     RequireReloopFetcher = requireReloopFetcher;
 }
Exemple #2
0
        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);
Exemple #3
0
 public FetchChapterIdentity(string url, string entityUrl)
 {
     Url           = url;
     EntityUrl     = entityUrl;
     ReloopFetcher = null;
 }
Exemple #4
0
 public FetchResult(IResourceFetchContext resourceFetchContext, ISingleResourceFetcher triggerFetcher, T value)
 {
     ResourceFetchContext = resourceFetchContext;
     TriggerFetcher       = triggerFetcher;
     Value = value;
 }
Exemple #5
0
 public FetchChapterIdentity(string url, string entityUrl, ISingleResourceFetcher fetcher)
 {
     Url           = url;
     EntityUrl     = entityUrl;
     ReloopFetcher = fetcher;
 }