Exemple #1
0
        public void GetWhenException_MustReturnNull()
        {
            var eng = new ComicEngine();

            eng.Add(new DataCondition {
                ConditionFunc = _ => throw new Exception()
            });
Exemple #2
0
        public static ComicVisiting <Stream> CreateResrouceVisitor()
        {
            var creator = new StreamResourceFactoryCreator();
            var eng     = new ComicEngine();

            eng.Add(new ResourceComicCondition());
            var prov     = new ResourceComicProvider();
            var provider = new ValueServiceProvider
            {
                ServiceMap = new Dictionary <Type, Func <object> >
                {
                    [typeof(ComicEngine)]           = () => eng,
                    [typeof(ResourceComicProvider)] = () => prov,
                }
            };

            provider.ServiceMap.Add(typeof(IServiceScopeFactory), () => new ValueServiceScopeFactory {
                ScopeFactory = () => new ValueServiceScope {
                    ServiceProvider = provider
                }
            });
            var visit = new ComicVisiting <Stream>(provider, creator);

            return(visit);
        }
Exemple #3
0
        public static void AddServices(IServiceCollection services, IConfiguration config)
        {
            services.AddKnowEngines();
            services.AddSingleton(x =>
            {
                var eng = new ComicEngine();
                eng.AddComicSource();
                return(eng);
            });
            services.AddSingleton(x =>
            {
                var factory = x.GetRequiredService <IServiceScopeFactory>();
                var eng     = new SearchEngine(factory);
                eng.AddSearchProvider();
                return(eng);
            });
            services.AddSingleton(x =>
            {
                var factory = x.GetRequiredService <IServiceScopeFactory>();
                var eng     = new ProposalEngine(factory);
                eng.AddProposalEngine();
                return(eng);
            });
            var mgr = new RecyclableMemoryStreamManager();

            services.AddSingleton(mgr);
            services.AddHttpClient();
            services.AddScoped <INetworkAdapter, HttpClientAdapter>();
            services.AddScoped <IJsEngine, JintJsEngine>();
            services.AddScoped <IDistributedCache, RedisCache>();
            services.AddOptions <RedisCacheOptions>()
            .Configure(x => x.Configuration = config["ConnectionStrings:CacheConnection"]);
            services.AddDbContext <AnfDbContext>((x, y) =>
            {
                var config = x.GetRequiredService <IConfiguration>();
                y.UseSqlServer(config["ConnectionStrings:anfdb"]);
            }).AddIdentityCore <AnfUser>(x =>
            {
                x.Password.RequireDigit           = false;
                x.Password.RequiredUniqueChars    = 0;
                x.Password.RequireLowercase       = false;
                x.Password.RequireNonAlphanumeric = false;
                x.Password.RequireUppercase       = false;
            })
            .AddEntityFrameworkStores <AnfDbContext>();

            services.AddOptions <FetchOptions>();
            services.AddOptions <ResourceLockOptions>();
            services.AddFetcherProvider()
            .AddRedisFetcherProvider()
            .AddMssqlResourceFetcher()
            .AddDefaultFetcherProvider();
            services.AddResourceFetcher()
            .AddMssqlResourceFetcher()
            .AddRedisFetcherProvider();
            services.AddScoped <IDbContextTransfer, AnfDbContextTransfer>();
            services.AddRedis();
        }
Exemple #4
0
 public ComicImageFinder(IDatabase database,
                         IServiceScopeFactory scopeFactory,
                         ComicEngine comicEngine,
                         ILoggerFactory loggerFactory)
 {
     Database           = database;
     this.comicEngine   = comicEngine;
     this.scopeFactory  = scopeFactory;
     this.loggerFactory = loggerFactory;
 }
Exemple #5
0
        public void GetNothingMatch_MustReturnNull()
        {
            var eng = new ComicEngine();
            var val = eng.GetComicSourceProviderType("http://www.baidu.com");

            Assert.IsNull(val);
            eng.Add(new DataCondition {
                Descript = new EngineDescript(), EngineName = "test", Order = 1, ProviderType = typeof(void), ConditionFunc = _ => false
            });
            val = eng.GetComicSourceProviderType(new Uri("http://www.baidu.com"));
            Assert.IsNull(val);
        }
Exemple #6
0
 public static void AddComicSource(this ComicEngine eng)
 {
     eng.Add(new Dm5ComicSourceCondition());
     eng.Add(new DmzjComicSourceCondition());
     eng.Add(new JisuComicSourceCondition());
     eng.Add(new KuaikanComicSourceCondition());
     eng.Add(new TencentComicSourceCondition());
     eng.Add(new BilibiliComicSourceCondition());
     eng.Add(new QimianComicSourceCondition());
     eng.Add(new MangabzComicCondition());
     eng.Add(new XmanhuaComicCondition());
     eng.Add(new BikabikaComicCondition());
 }
        public void CallGetComicEngine_MustReturnEngineInstance()
        {
            var eng      = new ComicEngine();
            var provider = new ValueServiceProvider
            {
                ServiceMap = new Dictionary <Type, Func <object> >
                {
                    [typeof(ComicEngine)] = () => eng
                }
            };
            var retEng = ComicHostExtensions.GetComicEngine(provider);

            Assert.AreEqual(eng, retEng);
        }
Exemple #8
0
 public ReadingController(ComicRankService comicRankService,
                          IRootFetcher rootFetcher,
                          IMemoryCache memoryCache,
                          SearchEngine searchEngine,
                          ComicEngine comicEngine,
                          HotSearchService hotSearchService,
                          IServiceScopeFactory scopeFactory)
 {
     this.scopeFactory     = scopeFactory;
     this.comicEngine      = comicEngine;
     this.hotSearchService = hotSearchService;
     this.searchEngine     = searchEngine;
     this.memoryCache      = memoryCache;
     this.comicRankService = comicRankService;
     this.rootFetcher      = rootFetcher;
 }
Exemple #9
0
 public ReadingController(ComicRankService comicRankService,
                          IRootFetcher rootFetcher,
                          IMemoryCache memoryCache,
                          SearchEngine searchEngine,
                          ComicEngine comicEngine,
                          ComicImageFinder comicImageFinder,
                          SearchStatisticalService searchStatisticalService,
                          VisitStatisticalService visitStatisticalService)
 {
     this.visitStatisticalService  = visitStatisticalService;
     this.searchStatisticalService = searchStatisticalService;
     this.comicImageFinder         = comicImageFinder;
     this.comicEngine      = comicEngine;
     this.searchEngine     = searchEngine;
     this.memoryCache      = memoryCache;
     this.comicRankService = comicRankService;
     this.rootFetcher      = rootFetcher;
 }
Exemple #10
0
        public async Task GivenNothingProvider_Load_MustLoadFail()
        {
            var creator  = new StreamResourceFactoryCreator();
            var eng      = new ComicEngine();
            var provider = new ValueServiceProvider
            {
                ServiceMap = new Dictionary <Type, Func <object> >
                {
                    [typeof(ComicEngine)] = () => eng,
                }
            };

            provider.ServiceMap.Add(typeof(IServiceScopeFactory), () => new ValueServiceScopeFactory {
                ScopeFactory = () => new ValueServiceScope {
                    ServiceProvider = provider
                }
            });
            var visit = new ComicVisiting <Stream>(provider, creator);
            var res   = await visit.LoadAsync(ComicVisitingHelper.AnyUri.AbsoluteUri);

            Assert.IsFalse(res);
            visit.Dispose();
        }
Exemple #11
0
        public void GivenNotUri_MustReturnThrowException()
        {
            var eng = new ComicEngine();

            Assert.ThrowsException <UriFormatException>(() => eng.GetComicSourceProviderType("--not-uri--"));
        }
Exemple #12
0
 public RemoteFetcher(IServiceScopeFactory serviceScopeFactory, ComicEngine eng)
 {
     this.serviceScopeFactory = serviceScopeFactory;
     this.eng = eng;
 }
Exemple #13
0
        protected override WithImageStorableComicSourceInfo <TResource, TImage> CreateSourceInfo(ComicSnapshot snapshot, ComicSource source, ComicEngine engine)
        {
            var store = AppEngine.GetRequiredService <WithImageComicStoreService <TResource, TImage> >();
            var box   = store.GetStoreBox(source.TargetUrl);

            return(new WithImageStorableComicSourceInfo <TResource, TImage>(snapshot, source, engine.GetComicSourceProviderType(source.TargetUrl), box));
        }
Exemple #14
0
 protected override ComicSourceInfo CreateSourceInfo(ComicSnapshot snapshot, ComicSource source, ComicEngine engine)
 {
     return(new ComicSourceInfo(snapshot, source, engine.GetComicSourceProviderType(source.TargetUrl)));
 }