/// <summary> /// Creates database if it does not exist. /// </summary> /// <param name="builder">The <see cref="IApplicationBuilder"/> instance.</param> /// <param name="env">The <see cref="IApplicationBuilder"/> instance.</param> public static void CreateDatabaseSchema(IApplicationBuilder builder, IWebHostEnvironment env) { bool databaseExists = false; DavContextConfig contextConfig = builder.ApplicationServices.GetService <IOptions <DavContextConfig> >().Value; SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder(contextConfig.ConnectionString); // extracts initial catalog name string databaseName = sqlConnectionStringBuilder.InitialCatalog; // sets initial catalog to master sqlConnectionStringBuilder.InitialCatalog = "master"; using (SqlConnection sqlConnection = new SqlConnection(sqlConnectionStringBuilder.ConnectionString)) { sqlConnection.Open(); using (SqlCommand sqlCommand = new SqlCommand($"SELECT count(*) from dbo.sysdatabases where name = '{databaseName}'", sqlConnection)) { databaseExists = ((int)sqlCommand.ExecuteScalar() != 0); } if (!databaseExists) { var scriptFi = new FileInfo(Path.Combine(env.ContentRootPath, "WebDAVServerImpl\\DB.sql")); if (!scriptFi.Exists) { scriptFi = new FileInfo(Path.Combine(env.ContentRootPath, "DB.sql")); } if (scriptFi.Exists) { RunScript(sqlConnection, File.ReadAllText(scriptFi.FullName)); } } } }
/// <summary> /// Initializes a new instance of the class. /// </summary> /// <param name="userIdentity">User Identity.</param> /// <param name="logger"><see cref="ILogger"/> instance.</param> /// <param name="configContext">WebDAV Context configuration.</param> /// <param name="configUsers">WebDAV Users configuration.</param> public DavContext(IHttpContextAccessor httpContextAccessor, ILogger logger, IOptions <DavContextConfig> configContext, IOptions <DavUsersConfig> configUsers) : base(httpContextAccessor.HttpContext) { this.contextConfig = configContext.Value; this.Users = configUsers.Value.Users; this.Identity = httpContextAccessor.HttpContext.User.Identity; this.Logger = logger; }
/// <summary> /// Initializes a new instance of the class. /// </summary> /// <param name="httpContextAccessor">Http context.</param> /// <param name="config">WebDAV Context configuration.</param> /// <param name="socketService">Singleton instance of <see cref="WebSocketsService"/>.</param> public DavContext(IHttpContextAccessor httpContextAccessor, IOptions <DavContextConfig> config , WebSocketsService socketService ) : base(httpContextAccessor.HttpContext) { this.contextConfig = config.Value; this.currentUser = httpContextAccessor.HttpContext.User; this.socketService = socketService; }
/// <summary> /// Initializes new instance of CognitiveSearchService. /// </summary> /// <param name="searchConfig">Search configuration.</param> /// <param name="davConfig">Context configuration.</param> public CognitiveSearchService(IOptions <SearchConfig> searchConfig, IOptions <DavContextConfig> davConfig) { SearchConfig config = searchConfig.Value; if (!string.IsNullOrEmpty(config.ApiKey)) { DavContextConfig dcConfig = davConfig.Value; string searchServiceUri = "https://" + config.ServiceName + ".search.windows.net"; searchClient = new SearchClient(new Uri(searchServiceUri), config.IndexName, new AzureKeyCredential(config.ApiKey)); contextPath = "https://" + dcConfig.AzureStorageAccountName + ".blob.core.windows.net" + "/" + dcConfig.DataLakeContainerName; } }
/// <summary> /// Initializes new instance of DataLakeStoreService. /// </summary> /// <param name="configuration">Context configuration.</param> /// <param name="httpContextAccessor">Http context.</param> public DataLakeStoreService(IOptions <DavContextConfig> configuration, IHttpContextAccessor httpContextAccessor) { var token = httpContextAccessor.HttpContext.User.Claims.FirstOrDefault(x => x.Type == "access_token")?.Value; if (token == null) { notAuthorized = true; } DavContextConfig config = configuration.Value; var credential = new DataLakeTokenCredential(token, DateTimeOffset.MaxValue); var dfsUri = "https://" + config.AzureStorageAccountName + ".dfs.core.windows.net"; dataLakeClient = new DataLakeServiceClient(new Uri(dfsUri), credential).GetFileSystemClient(config.DataLakeContainerName); }