コード例 #1
0
        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);
        }
コード例 #2
0
 /// <summary>
 /// Self-hosted сервис для обновления репозиториев
 /// </summary>
 public UpdateRepositoriesHostedService(
     IGitStatisticsService gitStatisticsService,
     IOptionsMonitor <RepositoriesConfig> repositoriesConfig)
 {
     _gitStatisticsService = gitStatisticsService;
     _repositoriesConfig   = repositoriesConfig.CurrentValue;
 }
コード例 #3
0
 /// <summary>
 /// Сервис для взаимодействия с GitLab
 /// </summary>
 public GitLabService(
     IOptionsMonitor <GitLabConfig> gitLabOptionsMonitor,
     IOptionsMonitor <RepositoriesConfig> repositoriesOptionsMonitor)
 {
     _gitLabConfig       = gitLabOptionsMonitor.CurrentValue;
     _repositoriesConfig = repositoriesOptionsMonitor.CurrentValue;
 }
コード例 #4
0
        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;
        }
コード例 #5
0
        // 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"; });
        }
コード例 #6
0
 private void InitConfig(RepositoriesConfig config = null)
 {
     if (config != null && config.Count > 0)
     {
         foreach (RepositoryConfig repo in config)
         {
             lookups.Add(new RepoLookUp(repo));
         }
     }
 }
コード例 #7
0
        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);
        }
コード例 #8
0
 /// <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;
 }
コード例 #9
0
        // 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
        }
コード例 #10
0
 /// <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;
 }
コード例 #11
0
        private IOptionsMonitor <RepositoriesConfig> GetMockConfig()
        {
            var config = new RepositoriesConfig
            {
                ReposFolder    = "-",
                MergeUserName  = "******",
                MergeUserEmail = "-",
                ReposInfo      = new[]
                {
                    new RepositoryInfoConfig
                    {
                        Url = "-"
                    },
                }
            };

            return(Mock.Of <IOptionsMonitor <RepositoriesConfig> >(_ => _.CurrentValue == config));
        }
コード例 #12
0
        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);
        }
コード例 #13
0
ファイル: Startup.cs プロジェクト: msevastyanov/devresume-cv
        // 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();
        }
コード例 #14
0
        // 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
                                                        );
        }
コード例 #15
0
        /// <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);
        }
コード例 #16
0
 public UserStatusFileRepository(RepositoriesConfig config)
 {
     _filename = config.MessagesSourcePath;
     _encoding = config.MessagesSourceEncoding;
 }
コード例 #17
0
 public MessageDataEntityFileRepository(RepositoriesConfig config)
 {
     _filename = config.MessagesSourcePath;
     _encoding = config.MessagesSourceEncoding;
 }