예제 #1
0
        public async Task DoneFetchChapterAsync(IValueResourceMonitorContext <WithPageChapter> context)
        {
            if (context.ProviderFetcher != this && !context.FetchContext.IsFromCache)
            {
                var chpSet   = dbContextTransfer.GetComicChapterSet();
                var pageJson = Encoding.UTF8.GetString(JsonSerializer.SerializeToUtf8Bytes(context.Value.Pages));
                var now      = DateTime.Now.Ticks;
                Task <int> UpdateChapterAsync()
                {
                    return(chpSet.Where(x => x.TargetUrl == context.Url)
                           .Take(1)
                           .UpdateFromQueryAsync(x => new KvComicChapter
                    {
                        Pages = pageJson,
                        Title = context.Value.Title,
                        UpdateTime = now
                    }));
                }

                var c = await UpdateChapterAsync();

                if (c == 0 && !string.IsNullOrEmpty(context.FetchContext.EntityUrl))
                {
                    var ctx   = context.FetchContext.Copy(context.FetchContext.EntityUrl);
                    var truck = await context.FetchContext.Root.FetchEntityAsync(ctx);

                    if (truck != null)
                    {
                        await CoreDoneFetchEntityAsync(ctx, truck);
                        await UpdateChapterAsync();
                    }
                }
            }
        }
예제 #2
0
 public Task DoneFetchEntityAsync(IValueResourceMonitorContext <AnfComicEntityTruck> context)
 {
     if (context.ProviderFetcher != this)
     {
         return(inRedisComicService.UpdateEntityAsync(context.Value));
     }
     return(Task.CompletedTask);
 }
예제 #3
0
 public Task DoneFetchChapterAsync(IValueResourceMonitorContext <WithPageChapter> context)
 {
     if (context.ProviderFetcher != this)
     {
         return(inRedisComicService.UpdateChapterAsync(context.Value));
     }
     return(Task.CompletedTask);
 }
예제 #4
0
 public Task DoneFetchEntityAsync(IValueResourceMonitorContext <AnfComicEntityTruck> context)
 {
     if (context.ProviderFetcher != this && !context.FetchContext.IsFromCache)
     {
         return(CoreDoneFetchEntityAsync(context.FetchContext, context.Value));
     }
     return(Task.CompletedTask);
 }
예제 #5
0
파일: MongoFetcher.cs 프로젝트: Cricle/Anf
        public async Task DoneFetchEntityAsync(IValueResourceMonitorContext <AnfComicEntityTruck> context)
        {
            if (context.ProviderFetcher != this && !context.FetchContext.IsFromCache)
            {
                var coll   = mongoClient.GetComicEntityCollection();
                var filter = Builders <AnfComicEntity> .Filter.Eq(x => x.ComicUrl, context.Value.ComicUrl);

                var updater = MakeUpdater(context.Value);
                await coll.UpdateOneAsync(filter, updater);
            }
        }
예제 #6
0
파일: MongoFetcher.cs 프로젝트: Cricle/Anf
        public async Task DoneFetchChapterAsync(IValueResourceMonitorContext <WithPageChapter> context)
        {
            if (context.ProviderFetcher != this && !context.FetchContext.IsFromCache)
            {
                var uri    = context.Value.TargetUrl;
                var coll   = mongoClient.GetComicEntityCollection();
                var filter = Builders <AnfComicEntity> .Filter.ElemMatch(x => x.WithPageChapters, x => x.TargetUrl == uri);

                var updater = MakeUpdater(context.Value);
                await coll.UpdateOneAsync(filter, updater);
            }
        }
예제 #7
0
 public Task DoneFetchEntityAsync(IValueResourceMonitorContext <AnfComicEntityTruck> context)
 {
     return(Task.CompletedTask);
 }
예제 #8
0
 public Task DoneFetchChapterAsync(IValueResourceMonitorContext <WithPageChapter> context)
 {
     return(Task.CompletedTask);
 }
예제 #9
0
 public Task DoneFetchEntityAsync(IValueResourceMonitorContext <AnfComicEntityTruck> context)
 {
     return(Task.WhenAll(this.Select(x => x.DoneFetchEntityAsync(context)).ToArray()));
 }
예제 #10
0
 public Task DoneFetchChapterAsync(IValueResourceMonitorContext <WithPageChapter> context)
 {
     return(Task.WhenAll(this.Select(x => x.DoneFetchChapterAsync(context)).ToArray()));
 }