public async Task GetModelsMultipleDtmisTryFromExpandedPartial() { const string dtmisExpanded = "dtmi:com:example:TemperatureController;1," + // Expanded available. "dtmi:com:example:Thermostat;1," + "dtmi:azure:DeviceManagement:DeviceInformation;1"; const string dtmisNonExpanded = "dtmi:com:example:ColdStorage;1," + // Model uses extends[], No Expanded available. "dtmi:com:example:Room;1," + "dtmi:com:example:Freezer;1"; string[] expandedDtmis = dtmisExpanded.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); string[] nonExpandedDtmis = dtmisNonExpanded.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); string[] totalDtmis = expandedDtmis.Concat(nonExpandedDtmis).ToArray(); ModelsRepositoryClientOptions options = new ModelsRepositoryClientOptions(dependencyResolution: ModelDependencyResolution.TryFromExpanded); ModelsRepositoryClient client = GetClient(ModelsRepositoryTestBase.ClientType.Local, options); // Multi-resolve dtmi:com:example:TemperatureController;1 + dtmi:com:example:ColdStorage;1 IDictionary <string, string> result = await client.GetModelsAsync(new[] { expandedDtmis[0], nonExpandedDtmis[0] }); result.Keys.Count.Should().Be(totalDtmis.Length); foreach (string id in totalDtmis) { result.Should().ContainKey(id); ModelsRepositoryTestBase.ParseRootDtmiFromJson(result[id]).Should().Be(id); } }
public void ClientOptions() { var defaultOptions = new ModelsRepositoryClientOptions(); defaultOptions.Version.Should().Be(ModelsRepositoryClientOptions.ServiceVersion.V2021_02_11); // Default MetadataOptions values defaultOptions.RepositoryMetadata.IsMetadataProcessingEnabled.Should().BeTrue(); // Ensure MetadataOptions properties are settable defaultOptions.RepositoryMetadata.IsMetadataProcessingEnabled = false; }
public async Task GetModelsSingleDtmiWithDepsDisableDependencyResolution(ModelsRepositoryTestBase.ClientType clientType) { const string dtmi = "dtmi:com:example:Thermostat;1"; ModelsRepositoryClientOptions options = new ModelsRepositoryClientOptions(dependencyResolution: ModelDependencyResolution.Disabled); ModelsRepositoryClient client = GetClient(clientType, options); IDictionary <string, string> result = await client.GetModelsAsync(dtmi); result.Keys.Count.Should().Be(1); result.Should().ContainKey(dtmi); ModelsRepositoryTestBase.ParseRootDtmiFromJson(result[dtmi]).Should().Be(dtmi); }
protected ModelsRepositoryClient GetClient(ModelsRepositoryTestBase.ClientType clientType, ModelsRepositoryClientOptions options = default) { if (options == null) { options = new ModelsRepositoryClientOptions(); } return (clientType == ModelsRepositoryTestBase.ClientType.Local ? InstrumentClient( new ModelsRepositoryClient( new Uri(ModelsRepositoryTestBase.TestLocalModelRepository), InstrumentClientOptions(options))) : InstrumentClient( new ModelsRepositoryClient( new Uri(ModelsRepositoryTestBase.TestRemoteModelRepository), InstrumentClientOptions(options)))); }
protected ModelsRepositoryClient GetClient( ModelsRepositoryTestBase.ClientType clientType = ModelsRepositoryTestBase.ClientType.Local, string repositoryLocation = null, ModelsRepositoryClientOptions options = default) { if (options == null) { options = new ModelsRepositoryClientOptions(); } if (string.IsNullOrEmpty(repositoryLocation)) { repositoryLocation = clientType == ModelsRepositoryTestBase.ClientType.Local ? ModelsRepositoryTestBase.TestLocalModelsRepository : ModelsRepositoryTestBase.ProdRemoteModelsRepositoryCDN; } return(InstrumentClient(new ModelsRepositoryClient(new Uri(repositoryLocation), InstrumentClientOptions(options)))); }
public static void ClientInitialization() { #region Snippet:ModelsRepositorySamplesCreateServiceClientWithGlobalEndpoint // When no URI is provided for instantiation, the Azure IoT Models Repository global endpoint // https://devicemodels.azure.com/ is used. var client = new ModelsRepositoryClient(new ModelsRepositoryClientOptions()); Console.WriteLine($"Initialized client pointing to the global endpoint: {client.RepositoryUri.AbsoluteUri}"); #endregion Snippet:ModelsRepositorySamplesCreateServiceClientWithGlobalEndpoint #region Snippet:ModelsRepositorySamplesCreateServiceClientWithCustomEndpoint // This form shows specifing a custom URI for the models repository with default client options. const string remoteRepoEndpoint = "https://contoso.com/models"; client = new ModelsRepositoryClient(new Uri(remoteRepoEndpoint)); Console.WriteLine($"Initialized client pointing to a custom endpoint: {client.RepositoryUri.AbsoluteUri}"); #endregion Snippet:ModelsRepositorySamplesCreateServiceClientWithCustomEndpoint #region Snippet:ModelsRepositorySamplesCreateServiceClientWithLocalRepository // The client will also work with a local filesystem URI. client = new ModelsRepositoryClient(new Uri(ClientSamplesLocalModelsRepository)); Console.WriteLine($"Initialized client pointing to a local path: {client.RepositoryUri.LocalPath}"); #endregion Snippet:ModelsRepositorySamplesCreateServiceClientWithLocalRepository #region Snippet:ModelsRepositorySamplesCreateServiceClientConfigureMetadataClientOption // ModelsRepositoryClientOptions supports configuration enabling consumption of repository // metadata within ModelsRepositoryClientOptions.RepositoryMetadata. // Fetching repository metadata is enabled by default. // This can be disabled as shown in the following snippet var customClientOptions = new ModelsRepositoryClientOptions(); customClientOptions.RepositoryMetadata.IsMetadataProcessingEnabled = false; client = new ModelsRepositoryClient(options: customClientOptions); Console.WriteLine($"Initialized client with disabled metadata fetching pointing " + $"to the global endpoint: {client.RepositoryUri.AbsoluteUri}."); #endregion Snippet:ModelsRepositorySamplesCreateServiceClientConfigureMetadataClientOption }
public async Task GetModelsSingleDtmiTryFromExpanded(ModelsRepositoryTestBase.ClientType clientType) { const string dtmi = "dtmi:com:example:TemperatureController;1"; const string expectedDeps = "dtmi:com:example:Thermostat;1,dtmi:azure:DeviceManagement:DeviceInformation;1"; var expectedDtmis = $"{dtmi},{expectedDeps}".Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); ModelsRepositoryClientOptions options = new ModelsRepositoryClientOptions(dependencyResolution: ModelDependencyResolution.TryFromExpanded); ModelsRepositoryClient client = GetClient(clientType, options); IDictionary <string, string> result = await client.GetModelsAsync(dtmi); result.Keys.Count.Should().Be(expectedDtmis.Length); foreach (var id in expectedDtmis) { result.Should().ContainKey(id); ModelsRepositoryTestBase.ParseRootDtmiFromJson(result[id]).Should().Be(id); } }
protected ModelsRepositoryClient GetClient( ModelsRepositoryTestBase.ClientType clientType, bool hasMetadata, ModelsRepositoryClientOptions options = default) { string targetLocation; if (clientType == ModelsRepositoryTestBase.ClientType.Local) { targetLocation = hasMetadata ? ModelsRepositoryTestBase.TestLocalModelsRepositoryWithMetadata : ModelsRepositoryTestBase.TestLocalModelsRepository; } else { targetLocation = hasMetadata ? ModelsRepositoryTestBase.ProdRemoteModelsRepositoryCDN : ModelsRepositoryTestBase.ProdRemoteModelsRepositoryGithub; } return(GetClient(repositoryLocation: targetLocation, options: options)); }
public HttpModelFetcher(ClientDiagnostics clientDiagnostics, ModelsRepositoryClientOptions clientOptions) { _pipeline = CreatePipeline(clientOptions); _clientDiagnostics = clientDiagnostics; }