mishima-nexus-client-csharp/src/Robotico.Nexus.Client/NexusCallMetadata.cs

26 lines
957 B
C#

using Grpc.Core;
namespace Robotico.Nexus.Client;
/// <summary>Builds per-call gRPC metadata (logical database + optional bearer) for wire calls.</summary>
internal static class NexusCallMetadata
{
/// <summary>gRPC metadata key for logical database selection (matches Nexus server-side convention).</summary>
internal const string DatabaseKey = "x-nexus-database";
/// <summary>Builds headers for a single RPC bound to <paramref name="databaseName"/>.</summary>
internal static Metadata Build(string databaseName, string? bearerToken)
{
Metadata metadata = new() { { DatabaseKey, databaseName } };
if (!string.IsNullOrWhiteSpace(bearerToken))
{
string value = bearerToken.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase)
? bearerToken
: "Bearer " + bearerToken;
metadata.Add("Authorization", value);
}
return metadata;
}
}