diff --git a/Directory.Packages.props b/Directory.Packages.props index 2a1ac7817..0f90a00c2 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -69,7 +69,7 @@ - + diff --git a/README.md b/README.md index 8a308bf5d..fab71dfc6 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ This repository contains the source code for the Aspire Community Toolkit, a col | - **Learn More**: [`Hosting.RavenDB`][ravendb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.RavenDB][ravendb-shields]][ravendb-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.RavenDB][ravendb-shields-preview]][ravendb-nuget-preview] | An Aspire integration leveraging the [RavenDB](https://ravendb.net/) container. | | - **Learn More**: [`RavenDB.Client`][ravendb-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.RavenDB.Client][ravendb-client-shields]][ravendb-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.RavenDB.Client][ravendb-client-shields-preview]][ravendb-client-nuget-preview] | An Aspire client integration for the [RavenDB.Client](https://www.nuget.org/packages/RavenDB.client) package. | | - **Learn More**: [`Hosting.GoFeatureFlag`][go-feature-flag-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Hosting.GoFeatureFlag][go-feature-flag-shields]][go-feature-flag-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.GoFeatureFlag][go-feature-flag-shields-preview]][go-feature-flag-nuget-preview] | An Aspire hosting integration leveraging the [GoFeatureFlag](https://gofeatureflag.org/) container. | -| - **Learn More**: [`GoFeatureFlag`][go-feature-flag-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.GoFeatureFlag][go-feature-flag-client-shields]][go-feature-flag-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.GoFeatureFlag][go-feature-flag-client-shields-preview]][go-feature-flag-client-nuget-preview] | An Aspire client integration for the [GoFeatureFlag](https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Contrib.Providers.GOFeatureFlag) package. | +| - **Learn More**: [`GoFeatureFlag`][go-feature-flag-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.GoFeatureFlag][go-feature-flag-client-shields]][go-feature-flag-client-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.GoFeatureFlag][go-feature-flag-client-shields-preview]][go-feature-flag-client-nuget-preview] | An Aspire client integration for the [GoFeatureFlag](https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Providers.GOFeatureFlag) package. | | - **Learn More**: [`Hosting.MongoDB.Extensions`][mongodb-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.MongoDB.Extensions][mongodb-ext-shields]][mongodb-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.MongoDB.Extensions][mongodb-ext-shields-preview]][mongodb-ext-nuget-preview] | An integration that contains some additional extensions for hosting MongoDB container. | | - **Learn More**: [`Hosting.PostgreSQL.Extensions`][postgres-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.PostgreSQL.Extensions][postgres-ext-shields]][postgres-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.PostgreSQL.Extensions][postgres-ext-shields-preview]][postgres-ext-nuget-preview] | An integration that contains some additional extensions for hosting PostgreSQL container. | | - **Learn More**: [`Hosting.Redis.Extensions`][redis-ext-integration-docs]
- Stable 📦: [![CommunityToolkit.Aspire.Redis.Extensions][redis-ext-shields]][redis-ext-nuget]
- Preview 📦: [![CommunityToolkit.Aspire.Hosting.Redis.Extensions][redis-ext-shields-preview]][redis-ext-nuget-preview] | An integration that contains some additional extensions for hosting Redis container. | diff --git a/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService/Program.cs b/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService/Program.cs index 3e1ad1a49..48ecd6060 100644 --- a/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService/Program.cs +++ b/examples/goff/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.ApiService/Program.cs @@ -1,4 +1,4 @@ -using OpenFeature.Contrib.Providers.GOFeatureFlag; +using OpenFeature.Providers.GOFeatureFlag; using OpenFeature.Model; var builder = WebApplication.CreateBuilder(args); @@ -14,17 +14,17 @@ // Currently supported flags are: // - `display-banner` app.MapGet( - "/features/{featureName}", - async (string featureName, GoFeatureFlagProvider provider, CancellationToken cancellationToken) => + "/features/{featureName}", + async (string featureName, GOFeatureFlagProvider provider, CancellationToken cancellationToken) => { var userContext = EvaluationContext.Builder() .Set("targetingKey", Guid.NewGuid().ToString()) .Set("anonymous", true) .Build(); var flag = await provider.ResolveBooleanValueAsync(featureName, false, userContext, cancellationToken); - + return Results.Ok(flag); }) .WithName("GetFeature"); -app.Run(); \ No newline at end of file +app.Run(); diff --git a/src/CommunityToolkit.Aspire.GoFeatureFlag/AspireGoFeatureFlagExtensions.cs b/src/CommunityToolkit.Aspire.GoFeatureFlag/AspireGoFeatureFlagExtensions.cs index d09749314..707556ccd 100644 --- a/src/CommunityToolkit.Aspire.GoFeatureFlag/AspireGoFeatureFlagExtensions.cs +++ b/src/CommunityToolkit.Aspire.GoFeatureFlag/AspireGoFeatureFlagExtensions.cs @@ -7,7 +7,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Diagnostics.HealthChecks; -using OpenFeature.Contrib.Providers.GOFeatureFlag; +using OpenFeature.Providers.GOFeatureFlag; namespace Microsoft.Extensions.Hosting; @@ -23,7 +23,7 @@ public static class AspireGoFeatureFlagExtensions /// /// The to read config from and add services to. /// The connection name to use to find a connection string. - /// An optional method that can be used for customizing the . It's invoked after the settings are read from the configuration. + /// An optional method that can be used for customizing the . It's invoked after the settings are read from the configuration. /// Reads the configuration from "Aspire:GoFeatureFlag:Client" section. /// If required ConnectionString is not provided in configuration section public static void AddGoFeatureFlagClient( @@ -41,7 +41,7 @@ public static void AddGoFeatureFlagClient( /// /// The to read config from and add services to. /// The connection name to use to find a connection string. - /// An optional method that can be used for customizing the . It's invoked after the settings are read from the configuration. + /// An optional method that can be used for customizing the . It's invoked after the settings are read from the configuration. /// Reads the configuration from "Aspire:GoFeatureFlag:Client" section. /// If required ConnectionString is not provided in configuration section public static void AddKeyedGoFeatureFlagClient( @@ -105,11 +105,11 @@ private static void AddGoFeatureFlagClient( )); } - GoFeatureFlagProvider ConfigureGoFeatureFlagClient(GoFeatureFlagProviderOptions options) + GOFeatureFlagProvider ConfigureGoFeatureFlagClient(GOFeatureFlagProviderOptions options) { if (settings.Endpoint is not null) { - return new GoFeatureFlagProvider(options); + return new GOFeatureFlagProvider(options); } throw new InvalidOperationException( diff --git a/src/CommunityToolkit.Aspire.GoFeatureFlag/CommunityToolkit.Aspire.GoFeatureFlag.csproj b/src/CommunityToolkit.Aspire.GoFeatureFlag/CommunityToolkit.Aspire.GoFeatureFlag.csproj index 50727d321..a99d43d7d 100644 --- a/src/CommunityToolkit.Aspire.GoFeatureFlag/CommunityToolkit.Aspire.GoFeatureFlag.csproj +++ b/src/CommunityToolkit.Aspire.GoFeatureFlag/CommunityToolkit.Aspire.GoFeatureFlag.csproj @@ -10,7 +10,7 @@ - + diff --git a/src/CommunityToolkit.Aspire.GoFeatureFlag/GoFeatureFlagClientSettings.cs b/src/CommunityToolkit.Aspire.GoFeatureFlag/GoFeatureFlagClientSettings.cs index a99abe87e..1467b9324 100644 --- a/src/CommunityToolkit.Aspire.GoFeatureFlag/GoFeatureFlagClientSettings.cs +++ b/src/CommunityToolkit.Aspire.GoFeatureFlag/GoFeatureFlagClientSettings.cs @@ -1,7 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using OpenFeature.Contrib.Providers.GOFeatureFlag; +using OpenFeature.Providers.GOFeatureFlag; +using OpenFeature.Providers.GOFeatureFlag.Models; using System.Data.Common; namespace CommunityToolkit.Aspire.GoFeatureFlag; @@ -34,7 +35,11 @@ public sealed class GoFeatureFlagClientSettings /// /// Gets or sets the provider options that will be used to configure the GO Feature Flag client. /// - public GoFeatureFlagProviderOptions ProviderOptions { get; set; } = new(); + public GOFeatureFlagProviderOptions ProviderOptions { get; set; } = new() + { + Endpoint = string.Empty, + EvaluationType = EvaluationType.Remote + }; internal void ParseConnectionString(string? connectionString) { diff --git a/src/CommunityToolkit.Aspire.GoFeatureFlag/README.md b/src/CommunityToolkit.Aspire.GoFeatureFlag/README.md index 43d2d8412..4642d62ad 100644 --- a/src/CommunityToolkit.Aspire.GoFeatureFlag/README.md +++ b/src/CommunityToolkit.Aspire.GoFeatureFlag/README.md @@ -1,6 +1,6 @@ # CommunityToolkit.Aspire.GoFeatureFlag -Registers a [GoFeatureFlagProvider](https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Contrib.Providers.GOFeatureFlag) in the DI container for connecting to a GO Feature Flag instance. +Registers a [GoFeatureFlagProvider](https://github.com/open-feature/dotnet-sdk-contrib/tree/main/src/OpenFeature.Providers.GOFeatureFlag) in the DI container for connecting to a GO Feature Flag instance. ## Getting started diff --git a/src/CommunityToolkit.Aspire.GoFeatureFlag/api/CommunityToolkit.Aspire.GoFeatureFlag.cs b/src/CommunityToolkit.Aspire.GoFeatureFlag/api/CommunityToolkit.Aspire.GoFeatureFlag.cs index f174dfc5d..8ca85585a 100644 --- a/src/CommunityToolkit.Aspire.GoFeatureFlag/api/CommunityToolkit.Aspire.GoFeatureFlag.cs +++ b/src/CommunityToolkit.Aspire.GoFeatureFlag/api/CommunityToolkit.Aspire.GoFeatureFlag.cs @@ -16,7 +16,7 @@ public sealed partial class GoFeatureFlagClientSettings public int? HealthCheckTimeout { get { throw null; } set { } } - public OpenFeature.Contrib.Providers.GOFeatureFlag.GoFeatureFlagProviderOptions ProviderOptions { get { throw null; } set { } } + public OpenFeature.Providers.GOFeatureFlag.GoFeatureFlagProviderOptions ProviderOptions { get { throw null; } set { } } } } @@ -28,4 +28,4 @@ public static void AddGoFeatureFlagClient(this IHostApplicationBuilder builder, public static void AddKeyedGoFeatureFlagClient(this IHostApplicationBuilder builder, string name, System.Action? configureSettings = null) { } } -} \ No newline at end of file +} diff --git a/src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/GoFeatureFlagContainerImageTags.cs b/src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/GoFeatureFlagContainerImageTags.cs index 6c196b0f3..5e2e8fc9d 100644 --- a/src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/GoFeatureFlagContainerImageTags.cs +++ b/src/CommunityToolkit.Aspire.Hosting.GoFeatureFlag/GoFeatureFlagContainerImageTags.cs @@ -9,6 +9,6 @@ internal static class GoFeatureFlagContainerImageTags public const string Registry = "docker.io"; /// gofeatureflag/go-feature-flag public const string Image = "gofeatureflag/go-feature-flag"; - /// v1.41 - public const string Tag = "v1.41"; + /// v1.50 + public const string Tag = "v1.50"; } \ No newline at end of file diff --git a/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/AspireGoFeatureFlagClientExtensionsTest.cs b/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/AspireGoFeatureFlagClientExtensionsTest.cs index 4d07a5cf9..9030cafe8 100644 --- a/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/AspireGoFeatureFlagClientExtensionsTest.cs +++ b/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/AspireGoFeatureFlagClientExtensionsTest.cs @@ -5,7 +5,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Diagnostics.HealthChecks; using Microsoft.Extensions.Hosting; -using OpenFeature.Contrib.Providers.GOFeatureFlag; +using OpenFeature.Providers.GOFeatureFlag; namespace CommunityToolkit.Aspire.GoFeatureFlag.Tests; @@ -97,9 +97,9 @@ public void CanAddMultipleKeyedServices() using var host = builder.Build(); - var client1 = host.Services.GetRequiredService(); - var client2 = host.Services.GetRequiredKeyedService("goff2"); - var client3 = host.Services.GetRequiredKeyedService("goff3"); + var client1 = host.Services.GetRequiredService(); + var client2 = host.Services.GetRequiredKeyedService("goff2"); + var client3 = host.Services.GetRequiredKeyedService("goff3"); Assert.NotSame(client1, client2); Assert.NotSame(client1, client3); @@ -121,8 +121,8 @@ public void CanAddClientFromEncodedConnectionString() using var host = builder.Build(); - var client1 = host.Services.GetRequiredService(); - var client2 = host.Services.GetRequiredKeyedService("goff2"); + var client1 = host.Services.GetRequiredService(); + var client2 = host.Services.GetRequiredKeyedService("goff2"); Assert.NotSame(client1, client2); } diff --git a/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/ConformanceTests.cs b/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/ConformanceTests.cs index e5942de1a..a970107b2 100644 --- a/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/ConformanceTests.cs +++ b/tests/CommunityToolkit.Aspire.GoFeatureFlag.Tests/ConformanceTests.cs @@ -5,12 +5,12 @@ using Aspire.Components.ConformanceTests; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; -using OpenFeature.Contrib.Providers.GOFeatureFlag; +using OpenFeature.Providers.GOFeatureFlag; using OpenFeature.Model; namespace CommunityToolkit.Aspire.GoFeatureFlag.Tests; -public class ConformanceTests : ConformanceTests, IClassFixture +public class ConformanceTests : ConformanceTests, IClassFixture { private readonly GoFeatureFlagContainerFixture _containerFixture; @@ -102,7 +102,7 @@ protected override void SetTracing(GoFeatureFlagClientSettings options, bool ena throw new NotImplementedException(); } - protected override void TriggerActivity(GoFeatureFlagProvider service) + protected override void TriggerActivity(GOFeatureFlagProvider service) { using var source = new CancellationTokenSource(100); diff --git a/tests/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests/GoFeatureFlagFunctionalTests.cs b/tests/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests/GoFeatureFlagFunctionalTests.cs index 0eb202a15..fcd818b83 100644 --- a/tests/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests/GoFeatureFlagFunctionalTests.cs +++ b/tests/CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests/GoFeatureFlagFunctionalTests.cs @@ -7,7 +7,7 @@ using Microsoft.Extensions.Hosting; using Xunit.Abstractions; using Aspire.Hosting.Utils; -using OpenFeature.Contrib.Providers.GOFeatureFlag; +using OpenFeature.Providers.GOFeatureFlag; using OpenFeature.Model; namespace CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests; @@ -16,7 +16,7 @@ namespace CommunityToolkit.Aspire.Hosting.GoFeatureFlag.Tests; public class GoFeatureFlagFunctionalTests(ITestOutputHelper testOutputHelper) { private static readonly string SOURCE = Path.GetFullPath("./goff", Directory.GetCurrentDirectory()); - + [Fact] public async Task VerifyGoFeatureFlagResource() { @@ -32,7 +32,7 @@ public async Task VerifyGoFeatureFlagResource() var rns = app.Services.GetRequiredService(); await rns.WaitForResourceHealthyAsync(goff.Resource.Name); - + var hb = Host.CreateApplicationBuilder(); hb.Configuration[$"ConnectionStrings:{goff.Resource.Name}"] = await goff.Resource.ConnectionStringExpression.GetValueAsync(default); @@ -43,7 +43,7 @@ public async Task VerifyGoFeatureFlagResource() await host.StartAsync(); - var goFeatureFlagProvider = host.Services.GetRequiredService(); + var goFeatureFlagProvider = host.Services.GetRequiredService(); await VerifyTestData(goFeatureFlagProvider); } @@ -89,7 +89,7 @@ public async Task VerifyWaitForOnGoFeatureFlagBlocksDependentResources() await app.StopAsync(); } - private static async Task VerifyTestData(GoFeatureFlagProvider goFeatureFlagProvider) + private static async Task VerifyTestData(GOFeatureFlagProvider goFeatureFlagProvider) { var userContext = EvaluationContext.Builder() .Set("targetingKey", Guid.NewGuid().ToString()) @@ -103,4 +103,4 @@ private static async Task VerifyTestData(GoFeatureFlagProvider goFeatureFlagProv Assert.NotNull(flag); Assert.True(flag.Value); } -} \ No newline at end of file +}