/// <summary> /// Initializes a new instance of the <see cref="CosmosDBService"/> class. /// </summary> /// <param name="configuration">Configuration.</param> /// <param name="azure">Azure management connection.</param> /// <param name="logger">Logger.</param> public CosmosDBService(IConfiguration configuration, AzureService azure, ILogger <CosmosDBService> logger) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } if (azure == null) { throw new ArgumentNullException(nameof(azure)); } this.logger = logger; var cosmosDBContainerResourceId = configuration["cosmosDBContainer"]; logger.LogInformation( "Initializing connection to Cosmos DB container {cosmosDBContainerResourceId}", cosmosDBContainerResourceId); ParseCosmosDBContainerResourceId( cosmosDBContainerResourceId, out string cosmosDBResourceId, out string cosmosDBDatabase, out string cosmosDBContainer); var cosmosDB = this.ConnectToCosmosDBAccount(azure, cosmosDBResourceId); this.container = this.ConnectToCosmosDBContainer(cosmosDB, cosmosDBDatabase, cosmosDBContainer); }
private ICosmosDBAccount ConnectToCosmosDBAccount(AzureService azure, string cosmosDBResourceId) { try { return(azure .Azure .CosmosDBAccounts .GetById(cosmosDBResourceId)); } catch (Exception e) { this.logger.LogCritical( e, "Couldn't retrieve Cosmos DB account keys for rule {cosmosDBResourceId}", cosmosDBResourceId); throw; } }