public FileNetChatHub(RepositoriesConfig repositoryConfigs) { _path = repositoryConfigs.MessagesSourcePath; _path = !string.IsNullOrWhiteSpace(_path) ? Path.GetFullPath(_path) : throw new ArgumentNullException(nameof(_path)); if (!Directory.Exists(Path.GetDirectoryName(_path))) { _logger.Debug("FileWatcher's directory is not exists: {0}", _path); try { var dirInfo = Directory.CreateDirectory(Path.GetDirectoryName(_path)); _logger.Debug("FileWatcher's directory '{0}' created", dirInfo.Name); } catch (Exception e) { _logger.Debug("{0} | {1}", e.Message, e.InnerException?.Message); throw; } } _filename = Path.GetFileName(_path); _encoding = repositoryConfigs.MessagesSourceEncoding; _fileWatcher = new FileSystemWatcher(Path.GetDirectoryName(_path)) { Filter = _filename, NotifyFilter = NotifyFilters.LastWrite, }; _logger.Debug("FileWatcher inited! Parameters: file={0}, encoding={1}", _fileWatcher.Filter, _encoding.HeaderName); }
/// <summary> /// Self-hosted сервис для обновления репозиториев /// </summary> public UpdateRepositoriesHostedService( IGitStatisticsService gitStatisticsService, IOptionsMonitor <RepositoriesConfig> repositoriesConfig) { _gitStatisticsService = gitStatisticsService; _repositoriesConfig = repositoriesConfig.CurrentValue; }
/// <summary> /// Сервис для взаимодействия с GitLab /// </summary> public GitLabService( IOptionsMonitor <GitLabConfig> gitLabOptionsMonitor, IOptionsMonitor <RepositoriesConfig> repositoriesOptionsMonitor) { _gitLabConfig = gitLabOptionsMonitor.CurrentValue; _repositoriesConfig = repositoriesOptionsMonitor.CurrentValue; }
public void Init() { var _dir = Path.Combine(Directory.GetCurrentDirectory()); var _encoding = Encoding.UTF8; var config = new RepositoriesConfig(Path.Combine(_dir, Guid.NewGuid().ToString() + ".datnetchat"), _encoding); _repo = new UserStatusFileRepository(config); _filename = config.MessagesSourcePath; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { string conn = Configuration.GetConnectionString("DefaultConnection"); if (conn.Contains("%CONTENTROOTPATH%")) { conn = conn.Replace("%CONTENTROOTPATH%", _contentRootPath); } DbConfig.ConfigureDb(services, conn); RepositoriesConfig.ConfigureRepositories(services); ServicesConfig.ConfigureServices(services); services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.Configure <AuthTokenOptions>(Configuration.GetSection("Authorization:Jwt")); var authTokenOptions = services.BuildServiceProvider().GetService <IOptions <AuthTokenOptions> >().Value; services.AddIdentity <ApplicationUser, IdentityRole>(options => { options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(10); options.Lockout.MaxFailedAccessAttempts = 5; options.Password.RequireDigit = false; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; }) .AddEntityFrameworkStores <SimContext>() .AddDefaultTokenProviders(); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(cfg => { cfg.RequireHttpsMetadata = false; cfg.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidIssuer = authTokenOptions.Issuer, ValidateAudience = true, ValidAudience = authTokenOptions.Audience, ValidateLifetime = true, IssuerSigningKey = authTokenOptions.GetSymmetricSecurityKey(), ValidateIssuerSigningKey = true, ClockSkew = TimeSpan.Zero }; }); services.AddControllersWithViews(); // In production, the Angular files will be served from this directory services.AddSpaStaticFiles(configuration => { configuration.RootPath = "ClientApp/dist"; }); }
private void InitConfig(RepositoriesConfig config = null) { if (config != null && config.Count > 0) { foreach (RepositoryConfig repo in config) { lookups.Add(new RepoLookUp(repo)); } } }
public void Init() { var config = new RepositoriesConfig( Path.Combine(Directory.GetCurrentDirectory(), Guid.NewGuid().ToString() + ".datnetchat"), Encoding.UTF8); _fname = config.MessagesSourcePath; var repo = new UserStatusFileRepository(config); _userService = new DefaultUserService(repo); }
/// <summary> /// Сервис для получения статистики из GIT репозиториев /// </summary> public GitStatisticsService( ILogger <GitStatisticsService> logger, IOptionsMonitor <StatisticsConfig> statisticsConfigMonitor, IOptionsMonitor <RepositoriesConfig> repositoriesConfig, IOptionsMonitor <WorkEstimateConfig> workEstimateConfig ) { _logger = logger; _statisticsConfig = statisticsConfigMonitor.CurrentValue; _repositoriesConfig = repositoriesConfig.CurrentValue; _workEstimateConfig = workEstimateConfig.CurrentValue; }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { AutoMapperConfig.Initialize(); RepositoriesConfig.Initialize(services); services.AddOptions(); services.Configure <AppConfig>(Configuration.GetSection("App")); services.AddCors(); services.AddMvc() .AddJsonOptions(opts => opts.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver()); // Force Camel Case to JSON }
/// <summary> /// Сервис для получения статистики из GIT репозиториев /// </summary> public GitStatisticsService( ILogger <GitStatisticsService> logger, IOptionsMonitor <ElasticConfig> statisticsConfigMonitor, IOptionsMonitor <RepositoriesConfig> repositoriesConfig, IOptionsMonitor <WorkEstimateConfig> workEstimateConfig, IGitlabServiceClient gitlabServiceClient ) { _logger = logger; _statisticsConfig = statisticsConfigMonitor.CurrentValue; _repositoriesConfig = repositoriesConfig.CurrentValue; _workEstimateConfig = workEstimateConfig.CurrentValue; _gitlabServiceClient = gitlabServiceClient; }
private IOptionsMonitor <RepositoriesConfig> GetMockConfig() { var config = new RepositoriesConfig { ReposFolder = "-", MergeUserName = "******", MergeUserEmail = "-", ReposInfo = new[] { new RepositoryInfoConfig { Url = "-" }, } }; return(Mock.Of <IOptionsMonitor <RepositoriesConfig> >(_ => _.CurrentValue == config)); }
public static ContainerBuilder AddFileMessaging(this ContainerBuilder container, string sourcePath, Encoding encoding) { var config = new RepositoriesConfig(sourcePath, encoding); container.RegisterInstance(config); container.RegisterType <MessageDataEntityFileRepository>().As <IMessageDataEntityRepository>(); container.RegisterType <UserStatusFileRepository>().As <IUserStatusRepository>(); container.RegisterType <DefaultMessageService>().As <IFileMessageService>(); container.RegisterType <DefaultUserService>().As <IFileUserService>(); var hub = new FileNetChatHub(config); container.RegisterInstance(hub).As <INetChatHub>().OwnedByLifetimeScope(); return(container); }
// This method gets called by the runtime. Use this method to add services to the container. // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 public void ConfigureServices(IServiceCollection services) { var conn = Configuration.GetConnectionString("DefaultConnection"); if (conn.Contains("%CONTENTROOTPATH%")) { conn = conn.Replace("%CONTENTROOTPATH%", _contentRootPath); } //ConnectionConfig.SetConnString(Configuration.GetConnectionString("DefaultConnection")); services.AddRazorPages().AddRazorPagesOptions(options => { options.Conventions.AddAreaPageRoute("Identity", "/Account/Login", "/login"); }); services.AddServerSideBlazor(); services .AddScoped <AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider <IdentityUser> >(); DbConfig.ConfigureDb(services, conn); RepositoriesConfig.ConfigureRepositories(services); ServicesConfig.ConfigureServices(services); services.AddDefaultIdentity <ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores <DataContext>(); services.AddHttpContextAccessor(); // services.AddIdentity<ApplicationUser, IdentityRole>(options => // { // options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(10); // options.Lockout.MaxFailedAccessAttempts = 5; // options.Password.RequireDigit = false; // options.Password.RequireLowercase = false; // options.Password.RequireNonAlphanumeric = false; // options.Password.RequireUppercase = false; // }) // .AddEntityFrameworkStores<DataContext>() // .AddDefaultTokenProviders(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddCors(options => { options.AddPolicy("AllowAllOrigins", builder => { builder .AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod(); }); }); // DatabaseConfig services.AddDbContext <LocalContext>(options => options.UseMySql(Configuration.GetConnectionString("Database"))); // Repositories _repositoriesConfig = new RepositoriesConfig(ref services); _repositoriesConfig.AddRepositoriesOnStartup(); // Authentication _authConfig = new AuthConfig(ref services, Configuration); _authConfig.AddAuthOnStartup(); // Swagger ConfigSwagger(services); services.AddControllers().AddNewtonsoftJson(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore ); }
/// <summary> /// Initializes a new instance of the <see cref="RepoFactory"/> class. /// </summary> /// <param name="config">configuration data to use</param> /// <param name="registry">processor registry to pass to created repositories</param> public RepoFactory(RepositoriesConfig config, ProcessorRegistry registry) { this.registry = registry; InitConfig(config); }
public UserStatusFileRepository(RepositoriesConfig config) { _filename = config.MessagesSourcePath; _encoding = config.MessagesSourceEncoding; }
public MessageDataEntityFileRepository(RepositoriesConfig config) { _filename = config.MessagesSourcePath; _encoding = config.MessagesSourceEncoding; }