public void GetWhenException_MustReturnNull() { var eng = new ComicEngine(); eng.Add(new DataCondition { ConditionFunc = _ => throw new Exception() });
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); }
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(); }
public ComicImageFinder(IDatabase database, IServiceScopeFactory scopeFactory, ComicEngine comicEngine, ILoggerFactory loggerFactory) { Database = database; this.comicEngine = comicEngine; this.scopeFactory = scopeFactory; this.loggerFactory = loggerFactory; }
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); }
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); }
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; }
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; }
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(); }
public void GivenNotUri_MustReturnThrowException() { var eng = new ComicEngine(); Assert.ThrowsException <UriFormatException>(() => eng.GetComicSourceProviderType("--not-uri--")); }
public RemoteFetcher(IServiceScopeFactory serviceScopeFactory, ComicEngine eng) { this.serviceScopeFactory = serviceScopeFactory; this.eng = eng; }
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)); }
protected override ComicSourceInfo CreateSourceInfo(ComicSnapshot snapshot, ComicSource source, ComicEngine engine) { return(new ComicSourceInfo(snapshot, source, engine.GetComicSourceProviderType(source.TargetUrl))); }