in src/Google.Cloud.Functions.Hosting/FunctionsEnvironmentVariablesConfigurationSource.cs [35:69]
internal FunctionsEnvironmentVariablesConfigurationSource(Func<string, string?> variableProvider) =>
_variableProvider = variableProvider;
public IConfigurationProvider Build(IConfigurationBuilder builder) => new Provider(_variableProvider);
private class Provider : ConfigurationProvider
{
private const string KeyPrefix = FunctionsFrameworkOptions.ConfigSection + ":";
private readonly Func<string, string?> _variableProvider;
internal Provider(Func<string, string?> variableProvider) =>
_variableProvider = variableProvider;
public override void Load()
{
var dict = new Dictionary<string, string?>(StringComparer.OrdinalIgnoreCase);
MaybeAdd(EntryPoint.FunctionTargetEnvironmentVariable, nameof(FunctionsFrameworkOptions.FunctionTarget), target => target);
MaybeAdd(EntryPoint.PortEnvironmentVariable, "Port", port => port);
MaybeAdd("DOTNET_RUNNING_IN_CONTAINER", "Address",
value => string.Equals(value, "true", StringComparison.OrdinalIgnoreCase) ? "Any" : "Loopback");
MaybeAdd("K_SERVICE", "JsonLogging", service => string.IsNullOrWhiteSpace(service) ? "False" : "True");
Data = dict;
void MaybeAdd(string variableName, string configurationName, Func<string?, string?> mapping)
{
var variable = _variableProvider(variableName);
var mappedValue = mapping(variable);
if (!string.IsNullOrWhiteSpace(mappedValue))
{
dict[KeyPrefix + configurationName] = mappedValue;
}
}
}
}