Skip to content

Commit 8d1e942

Browse files
authored
Merge pull request #639 from Azure/preview
Preview 8.2.0
2 parents 6e9971a + d7f5939 commit 8d1e942

37 files changed

+1226
-675
lines changed

src/Microsoft.Azure.AppConfiguration.AspNetCore/Microsoft.Azure.AppConfiguration.AspNetCore.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<!-- Nuget Package Version Settings -->
2222

2323
<PropertyGroup>
24-
<OfficialVersion>8.1.0-preview</OfficialVersion>
24+
<OfficialVersion>8.2.0-preview</OfficialVersion>
2525
</PropertyGroup>
2626

2727
<PropertyGroup Condition="'$(CDP_PATCH_NUMBER)'!='' AND '$(CDP_BUILD_TYPE)'=='Official'">

src/Microsoft.Azure.AppConfiguration.Functions.Worker/Microsoft.Azure.AppConfiguration.Functions.Worker.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<!-- Nuget Package Version Settings -->
2525

2626
<PropertyGroup>
27-
<OfficialVersion>8.1.0-preview</OfficialVersion>
27+
<OfficialVersion>8.2.0-preview</OfficialVersion>
2828
</PropertyGroup>
2929

3030
<PropertyGroup Condition="'$(CDP_PATCH_NUMBER)'!='' AND '$(CDP_BUILD_TYPE)'=='Official'">
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// Copyright (c) Microsoft Corporation.
2+
// Licensed under the MIT license.
3+
//
4+
using Azure.Core;
5+
using Azure.Data.AppConfiguration;
6+
using Microsoft.Extensions.Azure;
7+
using System;
8+
using System.Collections.Generic;
9+
using System.Linq;
10+
11+
namespace Microsoft.Extensions.Configuration.AzureAppConfiguration
12+
{
13+
internal class AzureAppConfigurationClientFactory : IAzureClientFactory<ConfigurationClient>
14+
{
15+
private readonly ConfigurationClientOptions _clientOptions;
16+
17+
private readonly TokenCredential _credential;
18+
private readonly IEnumerable<string> _connectionStrings;
19+
20+
public AzureAppConfigurationClientFactory(
21+
IEnumerable<string> connectionStrings,
22+
ConfigurationClientOptions clientOptions)
23+
{
24+
if (connectionStrings == null || !connectionStrings.Any())
25+
{
26+
throw new ArgumentNullException(nameof(connectionStrings));
27+
}
28+
29+
_connectionStrings = connectionStrings;
30+
31+
_clientOptions = clientOptions ?? throw new ArgumentNullException(nameof(clientOptions));
32+
}
33+
34+
public AzureAppConfigurationClientFactory(
35+
TokenCredential credential,
36+
ConfigurationClientOptions clientOptions)
37+
{
38+
_credential = credential ?? throw new ArgumentNullException(nameof(credential));
39+
_clientOptions = clientOptions ?? throw new ArgumentNullException(nameof(clientOptions));
40+
}
41+
42+
public ConfigurationClient CreateClient(string endpoint)
43+
{
44+
if (string.IsNullOrEmpty(endpoint))
45+
{
46+
throw new ArgumentNullException(nameof(endpoint));
47+
}
48+
49+
if (!Uri.TryCreate(endpoint, UriKind.Absolute, out Uri uriResult))
50+
{
51+
throw new ArgumentException("Invalid host URI.");
52+
}
53+
54+
if (_credential != null)
55+
{
56+
return new ConfigurationClient(uriResult, _credential, _clientOptions);
57+
}
58+
59+
string connectionString = _connectionStrings.FirstOrDefault(cs => ConnectionStringUtils.Parse(cs, ConnectionStringUtils.EndpointSection) == endpoint);
60+
61+
//
62+
// falback to the first connection string
63+
if (connectionString == null)
64+
{
65+
string id = ConnectionStringUtils.Parse(_connectionStrings.First(), ConnectionStringUtils.IdSection);
66+
string secret = ConnectionStringUtils.Parse(_connectionStrings.First(), ConnectionStringUtils.SecretSection);
67+
68+
connectionString = ConnectionStringUtils.Build(uriResult, id, secret);
69+
}
70+
71+
return new ConfigurationClient(connectionString, _clientOptions);
72+
}
73+
}
74+
}

src/Microsoft.Extensions.Configuration.AzureAppConfiguration/AzureAppConfigurationExtensions.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ private static bool IsProviderDisabled()
3333
/// </summary>
3434
/// <param name="configurationBuilder">The configuration builder to add key-values to.</param>
3535
/// <param name="connectionString">The connection string used to connect to the configuration store.</param>
36-
/// <param name="optional">Determines the behavior of the App Configuration provider when an exception occurs while loading data from server. If false, the exception is thrown. If true, the exception is suppressed and no settings are populated from Azure App Configuration.</param>
36+
/// <param name="optional">Determines the behavior of the App Configuration provider when an exception occurs while loading data from server. If false, the exception is thrown. If true, the exception is suppressed and no settings are populated from Azure App Configuration.
37+
/// <exception cref="ArgumentException"/> will always be thrown when the caller gives an invalid input configuration (connection strings, endpoints, key/label filters...etc).
38+
/// </param>
3739
/// <returns>The provided configuration builder.</returns>
3840
public static IConfigurationBuilder AddAzureAppConfiguration(
3941
this IConfigurationBuilder configurationBuilder,
@@ -48,7 +50,9 @@ public static IConfigurationBuilder AddAzureAppConfiguration(
4850
/// </summary>
4951
/// <param name="configurationBuilder">The configuration builder to add key-values to.</param>
5052
/// <param name="connectionStrings">The list of connection strings used to connect to the configuration store and its replicas.</param>
51-
/// <param name="optional">Determines the behavior of the App Configuration provider when an exception occurs while loading data from server. If false, the exception is thrown. If true, the exception is suppressed and no settings are populated from Azure App Configuration.</param>
53+
/// <param name="optional">Determines the behavior of the App Configuration provider when an exception occurs while loading data from server. If false, the exception is thrown. If true, the exception is suppressed and no settings are populated from Azure App Configuration.
54+
/// <exception cref="ArgumentException"/> will always be thrown when the caller gives an invalid input configuration (connection strings, endpoints, key/label filters...etc).
55+
/// </param>
5256
/// <returns>The provided configuration builder.</returns>
5357
public static IConfigurationBuilder AddAzureAppConfiguration(
5458
this IConfigurationBuilder configurationBuilder,
@@ -63,7 +67,9 @@ public static IConfigurationBuilder AddAzureAppConfiguration(
6367
/// </summary>
6468
/// <param name="configurationBuilder">The configuration builder to add key-values to.</param>
6569
/// <param name="action">A callback used to configure Azure App Configuration options.</param>
66-
/// <param name="optional">Determines the behavior of the App Configuration provider when an exception occurs while loading data from server. If false, the exception is thrown. If true, the exception is suppressed and no settings are populated from Azure App Configuration.</param>
70+
/// <param name="optional">Determines the behavior of the App Configuration provider when an exception occurs while loading data from server. If false, the exception is thrown. If true, the exception is suppressed and no settings are populated from Azure App Configuration.
71+
/// <exception cref="ArgumentException"/> will always be thrown when the caller gives an invalid input configuration (connection strings, endpoints, key/label filters...etc).
72+
/// </param>
6773
/// <returns>The provided configuration builder.</returns>
6874
public static IConfigurationBuilder AddAzureAppConfiguration(
6975
this IConfigurationBuilder configurationBuilder,

0 commit comments

Comments
 (0)