Esempio n. 1
0
        private static void ConfigureCosmosDB(IServiceCollection services, IConfiguration configuration)
        {
            services.AddTransient <Func <string, CosmosDbSetting> >(serviceProvider => name =>
            {
                var kvSetting = serviceProvider.GetRequiredService <KeyVaultSetting>();
                var kvCert    = CertUtil.FindCertificateByThumbprint(kvSetting.AuthCertThumbprint);
                var kvClient  = new KeyVaultUtil(kvSetting.VaultName, kvSetting.AuthClientId, kvCert);

                switch (name)
                {
                case "graph":
                    var graphDbKey     = kvClient.GetSecret(kvSetting.GraphDbAuthKeySecretName).Result;
                    var graphDbSetting = new CosmosDbSetting()
                    {
                        AccountName    = configuration["graphDb:accountName"],
                        DbName         = configuration["graphDb:dbName"],
                        CollectionName = configuration["graphDb:collectionName"],
                        AuthKey        = graphDbKey
                    };
                    return(graphDbSetting);

                default:
                    var docDbKey     = kvClient.GetSecret(kvSetting.DocDbAuthKeySecretName).Result;
                    var docDbSetting = new CosmosDbSetting()
                    {
                        AccountName    = configuration["docDb:accountName"],
                        DbName         = configuration["docDb:dbName"],
                        CollectionName = configuration["docDb:collectionName"],
                        AuthKey        = docDbKey
                    };
                    return(docDbSetting);
                }
            });
        }