public static void UseSqlServer(
            this SerilogUiOptionsBuilder optionsBuilder,
            string connectionString,
            string tableName,
            string schemaName = "dbo"
            )
        {
            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException(nameof(connectionString));
            }

            if (string.IsNullOrEmpty(tableName))
            {
                throw new ArgumentNullException(nameof(tableName));
            }

            var relationProvider = new RelationalDbOptions
            {
                ConnectionString = connectionString,
                TableName        = tableName,
                Schema           = schemaName
            };

            ((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddSingleton(relationProvider);
            ((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddScoped <IDataProvider, SqlServerDataProvider>();
        }
Example #2
0
        public static void UseElasticSearchDb(this SerilogUiOptionsBuilder optionsBuilder, Uri endpoint, string indexName)
        {
            if (endpoint == null)
            {
                throw new ArgumentNullException(nameof(endpoint));
            }

            if (string.IsNullOrEmpty(indexName))
            {
                throw new ArgumentNullException(nameof(indexName));
            }

            var options = new ElasticSearchDbOptions
            {
                IndexName = indexName
            };

            var builder = ((ISerilogUiOptionsBuilder)optionsBuilder);

            builder.Services.AddSingleton(options);

            var pool = new SingleNodeConnectionPool(endpoint);
            var connectionSettings = new ConnectionSettings(pool, sourceSerializer: (builtin, values) => new VanillaSerializer());

            builder.Services.AddSingleton <IElasticClient>(o => new ElasticClient(connectionSettings));
            builder.Services.AddScoped <IDataProvider, ElasticSearchDbDataProvider>();
        }
Example #3
0
        public static IServiceCollection AddSerilogUi(this IServiceCollection services, Action <SerilogUiOptionsBuilder> optionsBuilder)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (optionsBuilder == null)
            {
                throw new ArgumentNullException(nameof(optionsBuilder));
            }

            var builder = new SerilogUiOptionsBuilder(services);

            optionsBuilder.Invoke(builder);

            var isAuthorizationFilterExist = services.Any(s => s.ServiceType.FullName == typeof(AuthorizationOptions).FullName);

            if (!isAuthorizationFilterExist)
            {
                services.AddScoped <AuthorizationOptions>();
            }

            return(services);
        }
        public static void UseMongoDb(
            this SerilogUiOptionsBuilder optionsBuilder,
            string connectionString,
            string databaseName,
            string collectionName
            )
        {
            if (string.IsNullOrEmpty(connectionString))
            {
                throw new ArgumentNullException(nameof(connectionString));
            }

            if (string.IsNullOrEmpty(databaseName))
            {
                throw new ArgumentNullException(nameof(databaseName));
            }

            if (string.IsNullOrEmpty(collectionName))
            {
                throw new ArgumentNullException(nameof(collectionName));
            }

            var mongoProvider = new MongoDbOptions
            {
                ConnectionString = connectionString,
                DatabaseName     = databaseName,
                CollectionName   = collectionName
            };

            ((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddSingleton(mongoProvider);
            ((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddSingleton <IMongoClient>(o => new MongoClient(connectionString));
            ((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddScoped <IDataProvider, MongoDbDataProvider>();
        }
Example #5
0
        public static IServiceCollection AddSerilogUi(
            this IServiceCollection services,
            IMvcBuilder mvcBuilder,
            Action <SerilogUiOptionsBuilder> optionsBuilder
            )
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (optionsBuilder == null)
            {
                throw new ArgumentNullException(nameof(optionsBuilder));
            }

            var builder = new SerilogUiOptionsBuilder(services);

            optionsBuilder.Invoke(builder);

            var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => a.FullName.StartsWith("Serilog.Ui.Web")).ToList();

            foreach (var assembly in assemblies)
            {
                if (assembly.FullName.Contains("Views"))
                {
                    mvcBuilder.PartManager.ApplicationParts.Add(new CompiledRazorAssemblyPart(assembly));
                }
                else
                {
                    mvcBuilder.PartManager.ApplicationParts.Add(new AssemblyPart(assembly));
                    var manifestResourceNames = assembly.GetManifestResourceNames();
                }
            }

            var isAuthorizationFilterExist = services.Any(s => s.ServiceType.FullName == typeof(AuthorizationOptions).FullName);

            if (!isAuthorizationFilterExist)
            {
                services.AddScoped <AuthorizationOptions>();
            }

            services.AddScoped <AuthorizationFilter>();

            return(services);
        }
        public static SerilogUiOptionsBuilder EnableAuthorization(this SerilogUiOptionsBuilder optionsBuilder, Action <AuthorizationOptions> options)
        {
            if (optionsBuilder == null)
            {
                throw new ArgumentNullException(nameof(optionsBuilder));
            }

            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            var authorizationOptions = new AuthorizationOptions {
                Enabled = true
            };

            options(authorizationOptions);

            ((ISerilogUiOptionsBuilder)optionsBuilder).Services.AddSingleton(authorizationOptions);

            return(optionsBuilder);
        }