internal static CosmosClientContext Create( CosmosClient cosmosClient, CosmosClientOptions clientOptions) { if (cosmosClient == null) { throw new ArgumentNullException(nameof(cosmosClient)); } clientOptions = ClientContextCore.CreateOrCloneClientOptions(clientOptions); HttpMessageHandler httpMessageHandler = CosmosHttpClientCore.CreateHttpClientHandler( clientOptions.GatewayModeMaxConnectionLimit, clientOptions.WebProxy); DocumentClient documentClient = new DocumentClient( cosmosClient.Endpoint, cosmosClient.AuthorizationTokenProvider, apitype: clientOptions.ApiType, sendingRequestEventArgs: clientOptions.SendingRequestEventArgs, transportClientHandlerFactory: clientOptions.TransportClientHandlerFactory, connectionPolicy: clientOptions.GetConnectionPolicy(), enableCpuMonitor: clientOptions.EnableCpuMonitor, storeClientFactory: clientOptions.StoreClientFactory, desiredConsistencyLevel: clientOptions.GetDocumentsConsistencyLevel(), handler: httpMessageHandler, sessionContainer: clientOptions.SessionContainer); return(ClientContextCore.Create( cosmosClient, documentClient, clientOptions)); }
internal static CosmosClientContext Create( CosmosClient cosmosClient, CosmosClientOptions clientOptions) { if (cosmosClient == null) { throw new ArgumentNullException(nameof(cosmosClient)); } clientOptions = ClientContextCore.CreateOrCloneClientOptions(clientOptions); DocumentClient documentClient = new DocumentClient( cosmosClient.Endpoint, cosmosClient.AccountKey, apitype: clientOptions.ApiType, sendingRequestEventArgs: clientOptions.SendingRequestEventArgs, transportClientHandlerFactory: clientOptions.TransportClientHandlerFactory, connectionPolicy: clientOptions.GetConnectionPolicy(), enableCpuMonitor: clientOptions.EnableCpuMonitor, storeClientFactory: clientOptions.StoreClientFactory, desiredConsistencyLevel: clientOptions.GetDocumentsConsistencyLevel(), handler: ClientContextCore.CreateHttpClientHandler(clientOptions), sessionContainer: clientOptions.SessionContainer); return(ClientContextCore.Create( cosmosClient, documentClient, clientOptions)); }
/// <summary> /// Creates a new CosmosClient with the account endpoint URI string and account key. /// /// CosmosClient is thread-safe. Its recommended to maintain a single instance of CosmosClient per lifetime /// of the application which enables efficient connection management and performance. Please refer to the /// <see href="https://docs.microsoft.com/azure/cosmos-db/performance-tips">performance guide</see>. /// </summary> /// <param name="accountEndpoint">The cosmos service endpoint to use</param> /// <param name="authKeyOrResourceToken">The cosmos account key or resource token to use to create the client.</param> /// <param name="clientOptions">(Optional) client options</param> /// <example> /// The CosmosClient is created with the AccountEndpoint, AccountKey or ResourceToken and configured to use "East US 2" region. /// <code language="c#"> /// <![CDATA[ /// using Microsoft.Azure.Cosmos; /// /// CosmosClient cosmosClient = new CosmosClient( /// "account-endpoint-from-portal", /// "account-key-from-portal", /// new CosmosClientOptions() /// { /// ApplicationRegion = Regions.EastUS2, /// }); /// /// // Dispose cosmosClient at application exit /// ]]> /// </code> /// </example> /// <seealso cref="CosmosClientOptions"/> /// <seealso cref="Fluent.CosmosClientBuilder"/> /// <seealso href="https://docs.microsoft.com/azure/cosmos-db/performance-tips">Performance Tips</seealso> /// <seealso href="https://docs.microsoft.com/azure/cosmos-db/troubleshoot-dot-net-sdk">Diagnose and troubleshoot issues</seealso> public CosmosClient( string accountEndpoint, string authKeyOrResourceToken, CosmosClientOptions clientOptions = null) { if (accountEndpoint == null) { throw new ArgumentNullException(nameof(accountEndpoint)); } if (authKeyOrResourceToken == null) { throw new ArgumentNullException(nameof(authKeyOrResourceToken)); } if (clientOptions == null) { clientOptions = new CosmosClientOptions(); } this.Endpoint = new Uri(accountEndpoint); this.AccountKey = authKeyOrResourceToken; CosmosClientOptions clientOptionsClone = clientOptions.Clone(); DocumentClient documentClient = new DocumentClient( this.Endpoint, this.AccountKey, apitype: clientOptionsClone.ApiType, sendingRequestEventArgs: clientOptionsClone.SendingRequestEventArgs, transportClientHandlerFactory: clientOptionsClone.TransportClientHandlerFactory, connectionPolicy: clientOptionsClone.GetConnectionPolicy(), enableCpuMonitor: clientOptionsClone.EnableCpuMonitor, storeClientFactory: clientOptionsClone.StoreClientFactory, desiredConsistencyLevel: clientOptionsClone.GetDocumentsConsistencyLevel(), handler: this.CreateHttpClientHandler(clientOptions), sessionContainer: clientOptionsClone.SessionContainer); this.Init( clientOptionsClone, documentClient); }
/// <summary> /// Creates a new CosmosClient with the account endpoint URI string and account key. /// /// CosmosClient is thread-safe. Its recommended to maintain a single instance of CosmosClient per lifetime /// of the application which enables efficient connection management and performance. Please refer to the /// <see href="https://docs.microsoft.com/azure/cosmos-db/performance-tips">performance guide</see>. /// </summary> /// <param name="accountEndpoint">The cosmos service endpoint to use</param> /// <param name="authKeyOrResourceToken">The cosmos account key or resource token to use to create the client.</param> /// <param name="clientOptions">(Optional) client options</param> /// <example> /// The CosmosClient is created with the AccountEndpoint, AccountKey or ResourceToken and configured to use "East US 2" region. /// <code language="c#"> /// <![CDATA[ /// using Microsoft.Azure.Cosmos; /// /// CosmosClient cosmosClient = new CosmosClient( /// "account-endpoint-from-portal", /// "account-key-from-portal", /// new CosmosClientOptions() /// { /// ApplicationRegion = Regions.EastUS2, /// }); /// /// // Dispose cosmosClient at application exit /// ]]> /// </code> /// </example> /// <seealso cref="CosmosClientOptions"/> /// <seealso cref="Fluent.CosmosClientBuilder"/> /// <seealso href="https://docs.microsoft.com/azure/cosmos-db/performance-tips">Performance Tips</seealso> /// <seealso href="https://docs.microsoft.com/azure/cosmos-db/troubleshoot-dot-net-sdk">Diagnose and troubleshoot issues</seealso> public CosmosClient( string accountEndpoint, string authKeyOrResourceToken, CosmosClientOptions clientOptions = null) { if (accountEndpoint == null) { throw new ArgumentNullException(nameof(accountEndpoint)); } if (authKeyOrResourceToken == null) { throw new ArgumentNullException(nameof(authKeyOrResourceToken)); } if (clientOptions == null) { clientOptions = new CosmosClientOptions(); } this.Endpoint = new Uri(accountEndpoint); this.AccountKey = authKeyOrResourceToken; CosmosClientOptions clientOptionsClone = clientOptions.Clone(); DocumentClient documentClient = new DocumentClient( this.Endpoint, this.AccountKey, apitype: clientOptionsClone.ApiType, sendingRequestEventArgs: clientOptionsClone.SendingRequestEventArgs, transportClientHandlerFactory: clientOptionsClone.TransportClientHandlerFactory, connectionPolicy: clientOptionsClone.GetConnectionPolicy(), enableCpuMonitor: clientOptionsClone.EnableCpuMonitor, storeClientFactory: clientOptionsClone.StoreClientFactory, desiredConsistencyLevel: clientOptionsClone.GetDocumentsConsistencyLevel(), handler: this.CreateHttpClientHandler(clientOptions), sessionContainer: clientOptionsClone.SessionContainer); this.ClientOptions = clientOptions; this.DocumentClient = documentClient; //Request pipeline ClientPipelineBuilder clientPipelineBuilder = new ClientPipelineBuilder( this, this.ClientOptions.CustomHandlers); this.RequestHandler = clientPipelineBuilder.Build(); CosmosSerializerCore serializerCore = CosmosSerializerCore.Create( this.ClientOptions.Serializer, this.ClientOptions.SerializerOptions); this.ResponseFactory = new CosmosResponseFactory(serializerCore); this.ClientContext = new ClientContextCore( client: this, clientOptions: this.ClientOptions, serializerCore: serializerCore, cosmosResponseFactory: this.ResponseFactory, requestHandler: this.RequestHandler, documentClient: this.DocumentClient, userAgent: this.DocumentClient.ConnectionPolicy.UserAgentContainer.UserAgent, encryptionProcessor: new EncryptionProcessor(), dekCache: new DekCache()); }