From bfa2b86a73acff99b30535f434929d7a3878b626 Mon Sep 17 00:00:00 2001 From: Ryan Lettieri Date: Thu, 7 Sep 2023 00:26:26 -0600 Subject: [PATCH] Using and fixing daprdefaults for workflow api token default Signed-off-by: Ryan Lettieri --- src/Dapr.Workflow/Dapr.Workflow.csproj | 4 ++++ .../WorkflowServiceCollectionExtensions.cs | 19 ++++++++++-------- src/Shared/DaprDefaults.cs | 20 +++++++++---------- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/Dapr.Workflow/Dapr.Workflow.csproj b/src/Dapr.Workflow/Dapr.Workflow.csproj index 781e891d0..9d8ba1a4e 100644 --- a/src/Dapr.Workflow/Dapr.Workflow.csproj +++ b/src/Dapr.Workflow/Dapr.Workflow.csproj @@ -17,6 +17,10 @@ + + + + diff --git a/src/Dapr.Workflow/WorkflowServiceCollectionExtensions.cs b/src/Dapr.Workflow/WorkflowServiceCollectionExtensions.cs index d29f51699..3c6ce63e0 100644 --- a/src/Dapr.Workflow/WorkflowServiceCollectionExtensions.cs +++ b/src/Dapr.Workflow/WorkflowServiceCollectionExtensions.cs @@ -20,12 +20,15 @@ namespace Dapr.Workflow using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using System.Net.Http; + using Dapr; /// /// Contains extension methods for using Dapr Workflow with dependency injection. /// public static class WorkflowServiceCollectionExtensions { + private static string daprApiToken = ""; + /// /// Adds Dapr Workflow support to the service collection. /// @@ -59,11 +62,11 @@ public static IServiceCollection AddDaprWorkflow( if (TryGetGrpcAddress(out string address)) { - var apiToken = Environment.GetEnvironmentVariable("DAPR_API_TOKEN"); - if (!string.IsNullOrEmpty(apiToken)) + daprApiToken = DaprDefaults.GetDefaultDaprApiToken(); + if (!string.IsNullOrEmpty(daprApiToken)) { HttpClient client = new HttpClient(); - client.DefaultRequestHeaders.Add("Dapr-Api-Token", apiToken); + client.DefaultRequestHeaders.Add("Dapr-Api-Token", daprApiToken); builder.UseGrpc(CreateChannel(address, client)); } else @@ -98,11 +101,11 @@ public static IServiceCollection AddDaprWorkflowClient(this IServiceCollection s { if (TryGetGrpcAddress(out string address)) { - var apiToken = Environment.GetEnvironmentVariable("DAPR_API_TOKEN"); - if (!string.IsNullOrEmpty(apiToken)) + daprApiToken = DaprDefaults.GetDefaultDaprApiToken(); + if (!string.IsNullOrEmpty(daprApiToken)) { HttpClient client = new HttpClient(); - client.DefaultRequestHeaders.Add("Dapr-Api-Token", apiToken); + client.DefaultRequestHeaders.Add("Dapr-Api-Token", daprApiToken); builder.UseGrpc(CreateChannel(address, client)); } else @@ -128,7 +131,7 @@ static bool TryGetGrpcAddress(out string address) // 1. DaprDefaults.cs uses 127.0.0.1 instead of localhost, which prevents testing with Dapr on WSL2 and the app on Windows // 2. DaprDefaults.cs doesn't compile when the project has C# nullable reference types enabled. // If the above issues are fixed (ensuring we don't regress anything) we should switch to using the logic in DaprDefaults.cs. - var daprEndpoint = Environment.GetEnvironmentVariable("DAPR_GRPC_ENDPOINT"); + var daprEndpoint = DaprDefaults.GetDefaultGrpcEndpoint(); if (!String.IsNullOrEmpty(daprEndpoint)) { address = daprEndpoint; return true; @@ -155,7 +158,7 @@ static GrpcChannel CreateChannel(string address, HttpClient client) { GrpcChannelOptions options = new() { HttpClient = client}; - var daprEndpoint = Environment.GetEnvironmentVariable("DAPR_GRPC_ENDPOINT"); + var daprEndpoint = DaprDefaults.GetDefaultGrpcEndpoint(); if (!String.IsNullOrEmpty(daprEndpoint)) { return GrpcChannel.ForAddress(daprEndpoint, options); } diff --git a/src/Shared/DaprDefaults.cs b/src/Shared/DaprDefaults.cs index 1ddab49b0..b738de921 100644 --- a/src/Shared/DaprDefaults.cs +++ b/src/Shared/DaprDefaults.cs @@ -17,10 +17,10 @@ namespace Dapr { internal static class DaprDefaults { - private static string httpEndpoint; - private static string grpcEndpoint; - private static string daprApiToken; - private static string appApiToken; + private static string httpEndpoint = string.Empty; + private static string grpcEndpoint = string.Empty; + private static string daprApiToken = string.Empty; + private static string appApiToken = string.Empty; /// /// Get the value of environment variable DAPR_API_TOKEN @@ -31,11 +31,11 @@ public static string GetDefaultDaprApiToken() // Lazy-init is safe because this is just populating the default // We don't plan to support the case where the user changes environment variables // for a running process. - if (daprApiToken == null) + if (string.IsNullOrEmpty(daprApiToken)) { // Treat empty the same as null since it's an environment variable var value = Environment.GetEnvironmentVariable("DAPR_API_TOKEN"); - daprApiToken = (value == string.Empty) ? null : value; + daprApiToken = string.IsNullOrEmpty(value) ? string.Empty : value; } return daprApiToken; @@ -47,10 +47,10 @@ public static string GetDefaultDaprApiToken() /// The value of environment variable APP_API_TOKEN public static string GetDefaultAppApiToken() { - if (appApiToken == null) + if (string.IsNullOrEmpty(appApiToken)) { var value = Environment.GetEnvironmentVariable("APP_API_TOKEN"); - appApiToken = (value == string.Empty) ? null : value; + appApiToken = string.IsNullOrEmpty(value) ? string.Empty : value; } return appApiToken; @@ -62,7 +62,7 @@ public static string GetDefaultAppApiToken() /// The value of HTTP endpoint based off environment variables public static string GetDefaultHttpEndpoint() { - if (httpEndpoint == null) + if (string.IsNullOrEmpty(httpEndpoint)) { var endpoint = Environment.GetEnvironmentVariable("DAPR_HTTP_ENDPOINT"); if (!string.IsNullOrEmpty(endpoint)) { @@ -84,7 +84,7 @@ public static string GetDefaultHttpEndpoint() /// The value of gRPC endpoint based off environment variables public static string GetDefaultGrpcEndpoint() { - if (grpcEndpoint == null) + if (string.IsNullOrEmpty(grpcEndpoint)) { var endpoint = Environment.GetEnvironmentVariable("DAPR_GRPC_ENDPOINT"); if (!string.IsNullOrEmpty(endpoint)) {