public OperationResult RemoveArticleConfig(int articleId) { ArticleConfig.Delete(articleId); return(UnitOfWork.Commit() > 0 ? new OperationResult(StatusCode.Okey) : new OperationResult(StatusCode.Okey, "早就被删了呢!")); }
public List <NewEmployee> GetNewEmployee(ArticleConfig item) { List <NewEmployee> employeeLst = new List <NewEmployee>(); try { if (item.Days != null) { int day = int.Parse(item.Days); DateTime date = DateTime.Now.AddDays(-day).Date; employeeLst = new BaseService <NewEmployee>().Repository.Entities.Where(a => a.EmployeeTime == date).ToList(); //employeeLst = Repository.Entities.ToList(); } else if (item.Month != null) { int month = int.Parse(item.Month); DateTime date = DateTime.Now.AddMonths(-month).Date; employeeLst = Repository.Entities.Where(a => a.EmployeeTime == date).ToList(); } } catch (Exception ex) { Logger.Error("Get New Employee Error: {0}", ex.Message.ToString()); } return(employeeLst); }
/// <summary> /// Ctor /// </summary> /// <param name="settings">Data settings</param> protected BaseDataProviderManager(ArticleConfig settings) { if (settings == null) { throw new ArgumentNullException("settings"); } this.Settings = settings; }
/// <summary> /// Initialize components and plugins in the environment. /// </summary> /// <param name="config">Config</param> public void Initialize(ArticleConfig config) { //register dependencies RegisterDependencies(config); //startup tasks if (!config.IgnoreStartupTasks) { RunStartupTasks(); } }
public AritcleSectionInputDataDto GetAritcleSectionInputDataDto(int formId) { var dto = new AritcleSectionInputDataDto { Articles = ArticleConfig.GetArticleConfigDtos(), Sections = SectionConfig.GetSectionConfigDtos(), Inputs = SectionConfig.GetInputConfigDtos(), Datas = DataCollection.GetDataCollectionDtos(formId) }; return(dto); }
/// <summary> /// Register dependencies /// </summary> /// <param name="config">Config</param> protected virtual void RegisterDependencies(ArticleConfig config) { var builder = new ContainerBuilder(); var container = builder.Build(); this._containerManager = new ContainerManager(container); //we create new instance of ContainerBuilder //because Build() or Update() method can only be called once on a ContainerBuilder. //dependencies var typeFinder = new WebAppTypeFinder(); builder = new ContainerBuilder(); builder.RegisterInstance(config).As <ArticleConfig>().SingleInstance(); builder.RegisterInstance(this).As <IEngine>().SingleInstance(); builder.RegisterInstance(typeFinder).As <ITypeFinder>().SingleInstance(); builder.Update(container); //register dependencies provided by other assemblies builder = new ContainerBuilder(); var drTypes = typeFinder.FindClassesOfType <IDependencyRegistrar>(); var drInstances = new List <IDependencyRegistrar>(); foreach (var drType in drTypes) { drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType)); } //sort drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList(); foreach (var dependencyRegistrar in drInstances) { dependencyRegistrar.Register(builder, typeFinder, config); } builder.Register(c => new UnitOfWorkInterceptor()); builder.Update(container); //set dependency resolver //if (config.SystemSetting.IsWebApi) //{ // var httpconfig = GlobalConfiguration.Configuration; // httpconfig.DependencyResolver = new AutofacWebApiDependencyResolver(container); //} //else DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); }
public OperationResult AddSectionConfig(SectionConfigDto dto) { var article = ArticleConfig.FindById(dto.ArticleId); if (article != null) { var section = Mapper.Map <SectionConfigDto, SectionConfig>(dto); section.ArticleId = article.Id; SectionConfig.Insert(section); return(UnitOfWork.Commit() > 0 ? new OperationResult(StatusCode.Okey) : new OperationResult(StatusCode.Failed)); } return(new OperationResult(StatusCode.NotFound, "失败了耶~刷新一下页面看看,会有惊喜哦")); }
public OperationResult UpsertArticleConfig(ArticleConfigDto dto) { var article = Mapper.Map <ArticleConfigDto, ArticleConfig>(dto); if (article.Id == 0) { ArticleConfig.Insert(article); return(UnitOfWork.Commit() > 0 ? new OperationResult(StatusCode.Okey).SetExtras(article.Id) : new OperationResult(StatusCode.Failed)); } else { ArticleConfig.Update(article); return(UnitOfWork.Commit() > 0 ? new OperationResult(StatusCode.Okey).SetExtras(article.Id) : new OperationResult(StatusCode.Failed)); } }
public RedisCacheManager(ArticleConfig config) { if (String.IsNullOrEmpty(config.RedisCachingConnectionString)) { throw new Exception("Redis connection string is empty"); } if (redisconfig == null) { redisconfig = new ConfigurationOptions(); redisconfig.ConnectTimeout = 5000; redisconfig.ResponseTimeout = 5000; redisconfig.SyncTimeout = 5000; redisconfig.EndPoints.Add(config.RedisCachingConnectionString, int.Parse(config.RedisPort)); //if (!config.SystemSetting.IsDev) // redisconfig.CommandMap = CommandMap.Sentinel; } logger = EngineContext.Current.Resolve <ILogger>(); //this._muxer = ConnectionMultiplexer.Connect(redisconfig); //this._db = _muxer.GetDatabase(); //this._perRequestCacheManager = EngineContext.Current.Resolve<IRedis>(); }
//private static bool? _databaseIsInstalled; /// <summary> /// Returns a value indicating whether database is already installed /// </summary> /// <returns></returns> public static bool DatabaseIsInstalled(ArticleConfig config) { return(config.DatabaseIsInstalled); }
public SingleStrategy(ArticleConfig articleconfig) { _articleconfig = articleconfig; }
public void TestGetById() { var article = ArticleConfig.FindById(1); Assert.IsNotNull(article); }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, ArticleConfig config) { //HTTP context and other related stuff builder.Register(c => //register FakeHttpContext when HttpContext is not available HttpContext.Current != null ? (new HttpContextWrapper(HttpContext.Current) as HttpContextBase) : (new FakeHttpContext("~/") as HttpContextBase)) .As <HttpContextBase>() .InstancePerLifetimeScope(); builder.Register(c => c.Resolve <HttpContextBase>().Request) .As <HttpRequestBase>() .InstancePerLifetimeScope(); builder.Register(c => c.Resolve <HttpContextBase>().Response) .As <HttpResponseBase>() .InstancePerLifetimeScope(); builder.Register(c => c.Resolve <HttpContextBase>().Server) .As <HttpServerUtilityBase>() .InstancePerLifetimeScope(); builder.Register(c => c.Resolve <HttpContextBase>().Session) .As <HttpSessionStateBase>() .InstancePerLifetimeScope(); //web helper builder.RegisterType <WebHelper>().As <IWebHelper>().InstancePerLifetimeScope(); //user agent helper //controllers // builder.Register(c => new CacheIInterceptor()); builder.RegisterControllers(typeFinder.GetAssemblies().ToArray()); //data layer builder.Register(x => new EfDataProviderManager(config)).As <BaseDataProviderManager>().InstancePerDependency(); builder.Register(x => x.Resolve <BaseDataProviderManager>().LoadDataProvider()).As <IDataProvider>().InstancePerDependency(); var efDataProviderManager = new EfDataProviderManager(config); var dataProvider = efDataProviderManager.LoadDataProvider(); dataProvider.InitDatabase(config.DatabaseInstallModel); builder.Register <IDbContext>(c => new BaseObjectContext(config.MsSqlConnectionString)).InstancePerLifetimeScope(); //builder.Register<IWriteDbContext>(c => new WriteObjectContext(config.MsSqlWriteConnectionString)).InstancePerLifetimeScope(); builder.RegisterGeneric(typeof(EfRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope(); //cache managers builder.RegisterType <MemoryCacheManager>().As <ICacheManager>().SingleInstance(); //services //use static cache (between HTTP requests) builder.RegisterType <DefaultLogger>().As <ILogger>().InstancePerLifetimeScope(); builder.RegisterType <DbContextFactory>().As <IDbContextFactory>().InstancePerLifetimeScope(); builder.RegisterType <SingleStrategy>().As <IReadDbStrategy>().InstancePerLifetimeScope(); //use static cache (between HTTP requests) bool databaseInstalled = DataSettingsHelper.DatabaseIsInstalled(config); if (!databaseInstalled) { //builder.RegisterType<CodeFirstInstallationService>().As<IInstallationService>().InstancePerLifetimeScope(); //installation service //if (config.UseFastInstallationService) //{ // builder.RegisterType<SqlFileInstallationService>().As<IInstallationService>().InstancePerLifetimeScope(); //} //else //{ // builder.RegisterType<CodeFirstInstallationService>().As<IInstallationService>().InstancePerLifetimeScope(); //} } //Register event consumers var consumers = typeFinder.FindClassesOfType(typeof(IConsumer <>)).ToList(); foreach (var consumer in consumers) { builder.RegisterType(consumer) .As(consumer.FindInterfaces((type, criteria) => { var isMatch = type.IsGenericType && ((Type)criteria).IsAssignableFrom(type.GetGenericTypeDefinition()); return(isMatch); }, typeof(IConsumer <>))) .InstancePerLifetimeScope(); } builder.RegisterType <EventPublisher>().As <IEventPublisher>().InstancePerLifetimeScope(); builder.RegisterType <SubscriptionService>().As <ISubscriptionService>().InstancePerLifetimeScope(); //unit of work builder.RegisterType <UnitOfWorkDbContextProvider>().As <IDbContextProvider>().InstancePerLifetimeScope(); builder.RegisterType <CallContextCurrentUnitOfWorkProvider>().As <IUnitOfWorkProvider>().InstancePerLifetimeScope(); builder.RegisterType <EfUnitOfWork>().As <IUnitOfWork>().InstancePerLifetimeScope(); builder.RegisterType <UnitOfWorkManager>().As <IUnitOfWorkManager>().InstancePerLifetimeScope(); builder.RegisterType <DbContextEfTransactionStrategy>().As <IEfTransactionStrategy>().InstancePerLifetimeScope(); builder.RegisterType <CallContextAmbientDataContext>().As <IAmbientDataContext>().SingleInstance(); builder.RegisterGeneric(typeof(DataContextAmbientScopeProvider <>)).As(typeof(IAmbientScopeProvider <>)).InstancePerLifetimeScope(); //serivce //Article builder.RegisterType <PayService>().As <IPayService>().InstancePerLifetimeScope().EnableClassInterceptors(); //Auth builder.RegisterType <RoomService>().As <IRoomService>().InstancePerLifetimeScope().EnableClassInterceptors(); //Author builder.RegisterType <UserService>().As <IUserService>().InstancePerLifetimeScope().EnableClassInterceptors(); //CounterService builder.RegisterType <SysService>().As <ISysService>().InstancePerLifetimeScope().EnableClassInterceptors(); //CounterService builder.RegisterType <RedisCacheManager>().As <IRedis>().InstancePerLifetimeScope(); }
public EfDataProviderManager(ArticleConfig settings) : base(settings) { }
public void TestDeleteById() { var section = SectionConfig.FindById(1); ArticleConfig.Delete(1); }
/// <summary> /// Register services and interfaces /// </summary> /// <param name="builder">Container builder</param> /// <param name="typeFinder">Type finder</param> /// <param name="config">Config</param> public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, ArticleConfig config) { Mapper.Initialize(cfg => { cfg.CreateMap <Domain.account_goods, account_goodsDto>(); cfg.CreateMap <account_goodsDto, Domain.account_goods>(); cfg.CreateMap <Domain.Accounts_Roles, Accounts_RolesDto>(); cfg.CreateMap <Accounts_RolesDto, Domain.Accounts_Roles>(); cfg.CreateMap <Domain.Accounts_UserRoles, Accounts_UserRolesDto>(); cfg.CreateMap <Accounts_UserRolesDto, Domain.Accounts_UserRoles>(); cfg.CreateMap <Domain.Accounts_Users, Accounts_UsersDto>(); cfg.CreateMap <Accounts_UsersDto, Domain.Accounts_Users>(); cfg.CreateMap <Domain.AddPrice, AddPriceDto>(); cfg.CreateMap <AddPriceDto, Domain.AddPrice>(); cfg.CreateMap <Domain.apartment, apartmentDto>(); cfg.CreateMap <apartmentDto, Domain.apartment>(); cfg.CreateMap <Domain.banner, bannerDto>(); cfg.CreateMap <bannerDto, Domain.banner>(); cfg.CreateMap <Domain.Book_Rdetail, Book_RdetailDto>(); cfg.CreateMap <Book_RdetailDto, Domain.Book_Rdetail>(); cfg.CreateMap <Domain.book_room, book_roomDto>(); cfg.CreateMap <book_roomDto, Domain.book_room>(); cfg.CreateMap <Domain.BookState, BookStateDto>(); cfg.CreateMap <BookStateDto, Domain.BookState>(); cfg.CreateMap <Domain.breakfirstcoupon, breakfirstcouponDto>(); cfg.CreateMap <breakfirstcouponDto, Domain.breakfirstcoupon>(); cfg.CreateMap <Domain.card_type, card_typeDto>(); cfg.CreateMap <card_typeDto, Domain.card_type>(); cfg.CreateMap <Domain.cCall, cCallDto>(); cfg.CreateMap <cCallDto, Domain.cCall>(); cfg.CreateMap <Domain.cDepartment, cDepartmentDto>(); cfg.CreateMap <cDepartmentDto, Domain.cDepartment>(); cfg.CreateMap <Domain.cIndustry, cIndustryDto>(); cfg.CreateMap <cIndustryDto, Domain.cIndustry>(); cfg.CreateMap <Domain.comm_unit, comm_unitDto>(); cfg.CreateMap <comm_unitDto, Domain.comm_unit>(); cfg.CreateMap <Domain.Commission, CommissionDto>(); cfg.CreateMap <CommissionDto, Domain.Commission>(); cfg.CreateMap <Domain.Contacts, ContactsDto>(); cfg.CreateMap <ContactsDto, Domain.Contacts>(); cfg.CreateMap <Domain.cost_type, cost_typeDto>(); cfg.CreateMap <cost_typeDto, Domain.cost_type>(); cfg.CreateMap <Domain.cPost, cPostDto>(); cfg.CreateMap <cPostDto, Domain.cPost>(); cfg.CreateMap <Domain.cprotocol, cprotocolDto>(); cfg.CreateMap <cprotocolDto, Domain.cprotocol>(); cfg.CreateMap <Domain.cprotocolPrice, cprotocolPriceDto>(); cfg.CreateMap <cprotocolPriceDto, Domain.cprotocolPrice>(); cfg.CreateMap <Domain.cpType, cpTypeDto>(); cfg.CreateMap <cpTypeDto, Domain.cpType>(); cfg.CreateMap <Domain.credit, creditDto>(); cfg.CreateMap <creditDto, Domain.credit>(); cfg.CreateMap <Domain.csysType, csysTypeDto>(); cfg.CreateMap <csysTypeDto, Domain.csysType>(); cfg.CreateMap <Domain.customer, customerDto>(); cfg.CreateMap <customerDto, Domain.customer>(); cfg.CreateMap <Domain.customerState, customerStateDto>(); cfg.CreateMap <customerStateDto, Domain.customerState>(); cfg.CreateMap <Domain.customerType, customerTypeDto>(); cfg.CreateMap <customerTypeDto, Domain.customerType>(); cfg.CreateMap <Domain.Entry, EntryDto>(); cfg.CreateMap <EntryDto, Domain.Entry>(); cfg.CreateMap <Domain.ExceedScheme, ExceedSchemeDto>(); cfg.CreateMap <ExceedSchemeDto, Domain.ExceedScheme>(); cfg.CreateMap <Domain.floor_ld, floor_ldDto>(); cfg.CreateMap <floor_ldDto, Domain.floor_ld>(); cfg.CreateMap <Domain.floor_manage, floor_manageDto>(); cfg.CreateMap <floor_manageDto, Domain.floor_manage>(); cfg.CreateMap <Domain.FtSet, FtSetDto>(); cfg.CreateMap <FtSetDto, Domain.FtSet>(); cfg.CreateMap <Domain.Goods, GoodsDto>(); cfg.CreateMap <GoodsDto, Domain.Goods>(); cfg.CreateMap <Domain.goods_account, goods_accountDto>(); cfg.CreateMap <goods_accountDto, Domain.goods_account>(); cfg.CreateMap <Domain.guest_source, guest_sourceDto>(); cfg.CreateMap <guest_sourceDto, Domain.guest_source>(); cfg.CreateMap <Domain.Hotel, HotelDto>(); cfg.CreateMap <HotelDto, Domain.Hotel>(); cfg.CreateMap <Domain.hour_room, hour_roomDto>(); cfg.CreateMap <hour_roomDto, Domain.hour_room>(); cfg.CreateMap <Domain.hourse_scheme, hourse_schemeDto>(); cfg.CreateMap <hourse_schemeDto, Domain.hourse_scheme>(); cfg.CreateMap <Domain.info, infoDto>(); cfg.CreateMap <infoDto, Domain.info>(); cfg.CreateMap <Domain.log, logDto>(); cfg.CreateMap <logDto, Domain.log>(); cfg.CreateMap <Domain.member, memberDto>(); cfg.CreateMap <memberDto, Domain.member>(); cfg.CreateMap <Domain.memberState, memberStateDto>(); cfg.CreateMap <memberStateDto, Domain.memberState>(); cfg.CreateMap <Domain.memberType, memberTypeDto>(); cfg.CreateMap <memberTypeDto, Domain.memberType>(); cfg.CreateMap <Domain.Menu, MenuDto>(); cfg.CreateMap <MenuDto, Domain.Menu>(); cfg.CreateMap <Domain.meth_pay, meth_payDto>(); cfg.CreateMap <meth_payDto, Domain.meth_pay>(); cfg.CreateMap <Domain.modes, modesDto>(); cfg.CreateMap <modesDto, Domain.modes>(); cfg.CreateMap <Domain.mRecords, mRecordsDto>(); cfg.CreateMap <mRecordsDto, Domain.mRecords>(); cfg.CreateMap <Domain.mtPrice, mtPriceDto>(); cfg.CreateMap <mtPriceDto, Domain.mtPrice>(); cfg.CreateMap <Domain.occu_infor, occu_inforDto>(); cfg.CreateMap <occu_inforDto, Domain.occu_infor>(); cfg.CreateMap <Domain.occu_informx, occu_informxDto>(); cfg.CreateMap <occu_informxDto, Domain.occu_informx>(); cfg.CreateMap <Domain.order_ext, order_extDto>(); cfg.CreateMap <order_extDto, Domain.order_ext>(); cfg.CreateMap <Domain.order_infor, order_inforDto>(); cfg.CreateMap <order_inforDto, Domain.order_infor>(); cfg.CreateMap <Domain.paymentMoney, paymentMoneyDto>(); cfg.CreateMap <paymentMoneyDto, Domain.paymentMoney>(); cfg.CreateMap <Domain.price_type, price_typeDto>(); cfg.CreateMap <price_typeDto, Domain.price_type>(); cfg.CreateMap <Domain.print, printDto>(); cfg.CreateMap <printDto, Domain.print>(); cfg.CreateMap <Domain.real_mode, real_modeDto>(); cfg.CreateMap <real_modeDto, Domain.real_mode>(); cfg.CreateMap <Domain.real_state, real_stateDto>(); cfg.CreateMap <real_stateDto, Domain.real_state>(); cfg.CreateMap <Domain.receipt, receiptDto>(); cfg.CreateMap <receiptDto, Domain.receipt>(); cfg.CreateMap <Domain.Remaker, RemakerDto>(); cfg.CreateMap <RemakerDto, Domain.Remaker>(); cfg.CreateMap <Domain.Repair, RepairDto>(); cfg.CreateMap <RepairDto, Domain.Repair>(); cfg.CreateMap <Domain.RoleMenu, RoleMenuDto>(); cfg.CreateMap <RoleMenuDto, Domain.RoleMenu>(); cfg.CreateMap <Domain.room_feature, room_featureDto>(); cfg.CreateMap <room_featureDto, Domain.room_feature>(); cfg.CreateMap <Domain.room_number, room_numberDto>(); cfg.CreateMap <room_numberDto, Domain.room_number>(); cfg.CreateMap <Domain.room_state, room_stateDto>(); cfg.CreateMap <room_stateDto, Domain.room_state>(); cfg.CreateMap <Domain.room_type, room_typeDto>(); cfg.CreateMap <room_typeDto, Domain.room_type>(); cfg.CreateMap <Domain.room_type_image, room_type_imageDto>(); cfg.CreateMap <room_type_imageDto, Domain.room_type_image>(); cfg.CreateMap <Domain.roomcoupon, roomcouponDto>(); cfg.CreateMap <roomcouponDto, Domain.roomcoupon>(); cfg.CreateMap <Domain.roomman, roommanDto>(); cfg.CreateMap <roommanDto, Domain.roomman>(); cfg.CreateMap <Domain.roomrent, roomrentDto>(); cfg.CreateMap <roomrentDto, Domain.roomrent>(); cfg.CreateMap <Domain.sale_man, sale_manDto>(); cfg.CreateMap <sale_manDto, Domain.sale_man>(); cfg.CreateMap <Domain.Shift, ShiftDto>(); cfg.CreateMap <ShiftDto, Domain.Shift>(); cfg.CreateMap <Domain.Shift_Exc, Shift_ExcDto>(); cfg.CreateMap <Shift_ExcDto, Domain.Shift_Exc>(); cfg.CreateMap <Domain.shopInfo, shopInfoDto>(); cfg.CreateMap <shopInfoDto, Domain.shopInfo>(); cfg.CreateMap <Domain.Sincethehous, SincethehousDto>(); cfg.CreateMap <SincethehousDto, Domain.Sincethehous>(); cfg.CreateMap <Domain.SuoRoom, SuoRoomDto>(); cfg.CreateMap <SuoRoomDto, Domain.SuoRoom>(); cfg.CreateMap <Domain.SuoSys, SuoSysDto>(); cfg.CreateMap <SuoSysDto, Domain.SuoSys>(); cfg.CreateMap <Domain.SysParamter, SysParamterDto>(); cfg.CreateMap <SysParamterDto, Domain.SysParamter>(); cfg.CreateMap <Domain.TypeScheme, TypeSchemeDto>(); cfg.CreateMap <TypeSchemeDto, Domain.TypeScheme>(); cfg.CreateMap <Domain.UserInfo, UserInfoDto>(); cfg.CreateMap <UserInfoDto, Domain.UserInfo>(); cfg.CreateMap <Domain.Users, UsersDto>(); cfg.CreateMap <UsersDto, Domain.Users>(); cfg.CreateMap <Domain.userType, userTypeDto>(); cfg.CreateMap <userTypeDto, Domain.userType>(); cfg.CreateMap <Domain.ZD_hourse, ZD_hourseDto>(); cfg.CreateMap <ZD_hourseDto, Domain.ZD_hourse>(); }); }
public DbContextFactory(ArticleConfig articleconfig, IReadDbStrategy readDbStrategy) { _articleconfig = articleconfig; _readDbStrategy = readDbStrategy; }
public async Task <IActionResult> Articles(string source) { // TODO: Pull these configs from a database or from a file ArticleConfig arsConfig = new ArticleConfig() { NewsSource = "Ars Technica", Organization = "Ars Technica", Title = "//h1", Subtitle = "//article//h2", FirstPara = "REPLACEME", Paragraphs = "//main//article//p", Footer = "", IntroImage = "//article//figure//img/@src", Authors = "//span[@itemprop='name']", PublishDate = "//time", UpperDeck = "//h4[@class='post-upperdek']", CommentCount = "//span[@class='comment-count-number']", CommentsUrlFormat = "{x}", PaginationUrlFormat = "{x}", }; ArticleConfig anandConfig = new ArticleConfig() { NewsSource = "AnandTech", Organization = "AnandTech", Title = "//h1", Subtitle = "", FirstPara = "", Paragraphs = "//div[@class='articleContent']//p", Footer = "", IntroImage = "//div[@class='sidepadding review']//div[@style='']//img/@src", Authors = "//a[@class='b']", PublishDate = "//div[@class='blog_top_left']//em", UpperDeck = "", CommentCount = "//div[@class='blog_top_right show_resp2']/span/a", CommentsUrlFormat = "{x}", PaginationUrlFormat = "{x}", }; ArticleConfig registerConfig = new ArticleConfig() { NewsSource = "The Register", Organization = "The Register", Title = "//h1", Subtitle = "//h2", FirstPara = "", Paragraphs = "//div[@id='body']//p", Footer = "", IntroImage = "//div[@class='sidepadding review']//div[@style='']//img/@src", Authors = "//a[@class='alt_colour dcl']", PublishDate = "//span[@class='dateline']", UpperDeck = "", CommentCount = "//div[@class='comments_share']/a/span", CommentsUrlFormat = "{x}", PaginationUrlFormat = "{x}", }; ArticleConfig ajcConfig = new ArticleConfig() { NewsSource = "AJC", Organization = "AJC", Title = "//h1", Subtitle = "", FirstPara = "", Paragraphs = "//p", Footer = "", IntroImage = "//img/@src", Authors = "//div[@class='names']/ul/li/names", PublishDate = "//time/@data-timestamp", UpperDeck = "", CommentCount = "", CommentsUrlFormat = "{x}", PaginationUrlFormat = "{x}", }; ArticleConfig voxConfig = new ArticleConfig() { NewsSource = "Vox", Organization = "Vox", Title = "//h1", Subtitle = "//h2[@class='c-entry-summary p-dek']", FirstPara = "REPLACEME", Paragraphs = "//p", Footer = "", IntroImage = "", Authors = "//span[@class='c-byline__item']", PublishDate = "//time", UpperDeck = "", CommentCount = "", CommentsUrlFormat = "{x}", PaginationUrlFormat = "{x}", }; ArticleConfig tcConfig = new ArticleConfig() { NewsSource = "TechCrunch", Organization = "TechCrunch", Title = "//h1", Subtitle = "", FirstPara = "", Paragraphs = "//article//p", Footer = "", IntroImage = "//article//img/@src", Authors = "//span[@itemprop='name']", PublishDate = "//time", UpperDeck = "//h4[@class='post-upperdek']", CommentCount = "//span[@class='comment-count-number']", CommentsUrlFormat = "{x}", PaginationUrlFormat = "{x}", }; if (source == "Ars Technica") { return(Ok(arsConfig)); } else if (source == "AnandTech") { return(Ok(anandConfig)); } else if (source == "The Register") { return(Ok(registerConfig)); } else if (source == "AJC") { return(Ok(ajcConfig)); } else if (source == "Vox") { return(Ok(voxConfig)); } else if (source == "TechCrunch") { return(Ok(tcConfig)); } return(Ok(arsConfig)); }