private IotHubServiceClient(IotHubSasCredential credential, IotHubServiceClientOptions options) { options ??= new IotHubServiceClientOptions(); _clientDiagnostics = new ClientDiagnostics(options); options.AddPolicy(new BearerTokenAuthenticationPolicy(credential, s_authorizationScopes), HttpPipelinePosition.PerCall); _httpPipeline = HttpPipelineBuilder.Build(options); _devicesRestClient = new DevicesRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); _modulesRestClient = new ModulesRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); _queryRestClient = new QueryRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); _statisticsRestClient = new StatisticsRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); _configurationRestClient = new ConfigurationRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); // Note that the devices and modules subclient take a reference to the Query convenience layer client. This // is because they each expose a helper function that uses the query client for listing twins. By passing in // the convenience layer query client rather than the protocol layer query client, we minimize rewriting the // same pagination logic that now exists only in the query convenience layer client. Query = new QueryClient(_queryRestClient); Devices = new DevicesClient(_devicesRestClient, Query); Modules = new ModulesClient(_devicesRestClient, _modulesRestClient, Query); Statistics = new StatisticsClient(_statisticsRestClient); Configurations = new ConfigurationsClient(_configurationRestClient); Messages = new CloudToDeviceMessagesClient(); Files = new FilesClient(); Jobs = new JobsClient(); }
/// <summary> /// Initializes a new instance of the <see cref="IoTHubServiceClient"/> class. /// </summary> /// <param name="connectionString"> /// The IoT Hub connection string, with either "iothubowner", "service", "registryRead" or "registryReadWrite" policy, as applicable. /// For more information, see <see href="https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-security#access-control-and-permissions">Access control and permissions</see>. /// </param> /// <param name="options"> /// Options that allow configuration of requests sent to the IoT Hub service. /// </param> public IoTHubServiceClient(string connectionString, IoTHubServiceClientOptions options) { Argument.AssertNotNull(options, nameof(options)); var iotHubConnectionString = new IotHubConnectionString(connectionString); ISasTokenProvider sasProvider = iotHubConnectionString.GetSasTokenProvider(); _endpoint = BuildEndpointUriFromHostName(iotHubConnectionString.HostName); _clientDiagnostics = new ClientDiagnostics(options); options.AddPolicy(new SasTokenAuthenticationPolicy(sasProvider), HttpPipelinePosition.PerCall); _httpPipeline = HttpPipelineBuilder.Build(options); _devicesRestClient = new DevicesRestClient(_clientDiagnostics, _httpPipeline, _endpoint, options.GetVersionString()); _modulesRestClient = new ModulesRestClient(_clientDiagnostics, _httpPipeline, _endpoint, options.GetVersionString()); _queryRestClient = new QueryRestClient(_clientDiagnostics, _httpPipeline, _endpoint, options.GetVersionString()); Devices = new DevicesClient(_devicesRestClient, _queryRestClient); Modules = new ModulesClient(_devicesRestClient, _modulesRestClient, _queryRestClient); Statistics = new StatisticsClient(); Messages = new CloudToDeviceMessagesClient(); Files = new FilesClient(); Jobs = new JobsClient(); }
/// <summary> /// Initializes a new instance of DevicesClient. /// <param name="devicesRestClient"> The REST client to perform device, device twin, and bulk operations. </param> /// <param name="queryRestClient"> The REST client to perform query operations for the device. </param> /// </summary> internal DevicesClient(DevicesRestClient devicesRestClient, QueryRestClient queryRestClient) { Argument.AssertNotNull(devicesRestClient, nameof(devicesRestClient)); Argument.AssertNotNull(queryRestClient, nameof(queryRestClient)); _devicesRestClient = devicesRestClient; _queryRestClient = queryRestClient; }
private IotHubServiceClient(IotHubSasCredential credential, IotHubServiceClientOptions options) { options ??= new IotHubServiceClientOptions(); _clientDiagnostics = new ClientDiagnostics(options); options.AddPolicy(new SasTokenAuthenticationPolicy(credential), HttpPipelinePosition.PerCall); _httpPipeline = HttpPipelineBuilder.Build(options); _devicesRestClient = new DevicesRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); _modulesRestClient = new ModulesRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); _queryRestClient = new QueryRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); _statisticsRestClient = new StatisticsRestClient(_clientDiagnostics, _httpPipeline, credential.Endpoint, options.GetVersionString()); Devices = new DevicesClient(_devicesRestClient, _queryRestClient); Modules = new ModulesClient(_devicesRestClient, _modulesRestClient, _queryRestClient); Statistics = new StatisticsClient(_statisticsRestClient); Messages = new CloudToDeviceMessagesClient(); Files = new FilesClient(); Jobs = new JobsClient(); }
/// <summary> /// Initializes a new instance of the <see cref="IoTHubServiceClient"/> class. /// </summary> /// <param name="endpoint"> /// The IoT Hub service instance URI to connect to. /// </param> /// <param name="credential"> /// The <see cref="TokenCredential"/> implementation which will be used to request for the authentication token. /// </param> /// <param name="options"> /// Options that allow configuration of requests sent to the IoT Hub service. /// </param> public IoTHubServiceClient(Uri endpoint, TokenCredential credential, IoTHubServiceClientOptions options) { Argument.AssertNotNull(options, nameof(options)); _endpoint = endpoint; _clientDiagnostics = new ClientDiagnostics(options); options.AddPolicy(new BearerTokenAuthenticationPolicy(credential, GetAuthorizationScopes(_endpoint)), HttpPipelinePosition.PerCall); _httpPipeline = HttpPipelineBuilder.Build(options); _devicesRestClient = new DevicesRestClient(_clientDiagnostics, _httpPipeline, _endpoint, options.GetVersionString()); _modulesRestClient = new ModulesRestClient(_clientDiagnostics, _httpPipeline, _endpoint, options.GetVersionString()); _queryRestClient = new QueryRestClient(_clientDiagnostics, _httpPipeline, _endpoint, options.GetVersionString()); Devices = new DevicesClient(_devicesRestClient, _queryRestClient); Modules = new ModulesClient(_devicesRestClient, _modulesRestClient, _queryRestClient); Statistics = new StatisticsClient(); Messages = new CloudToDeviceMessagesClient(); Files = new FilesClient(); Jobs = new JobsClient(); }
/// <summary> /// Initializes a new instance of QueryClient. /// <param name="queryRestClient"> The REST client to perform query operations. </param> /// </summary> internal QueryClient(QueryRestClient queryRestClient) { Argument.AssertNotNull(queryRestClient, nameof(queryRestClient)); _queryRestClient = queryRestClient; }