// Copyright © WireMock.Net
using System.Collections;
using Stef.Validation;
using WireMock.Settings;
namespace WireMock.OpenTelemetry;
///
/// A static helper class to parse commandline arguments into OpenTelemetryOptions.
///
public static class OpenTelemetryOptionsParser
{
private const string Prefix = "OpenTelemetry";
///
/// Parse commandline arguments into OpenTelemetryOptions.
///
/// The commandline arguments
/// The environment settings (optional)
/// The parsed options, or null if OpenTelemetry is not enabled
/// Always returns true.
public static bool TryParseArguments(string[] args, IDictionary? environment, out OpenTelemetryOptions? options)
{
Guard.HasNoNulls(args);
var parser = new SimpleSettingsParser();
parser.Parse(args, environment);
if (!parser.GetBoolValue($"{Prefix}Enabled"))
{
options = null;
return true;
}
options = new OpenTelemetryOptions
{
ExcludeAdminRequests = parser.GetBoolValue($"{Prefix}ExcludeAdminRequests", defaultValue: true),
OtlpExporterEndpoint = parser.GetStringValue($"{Prefix}OtlpExporterEndpoint")
};
return true;
}
}