using Grpc.Core;
namespace Robotico.Nexus.Client;
/// Builds per-call gRPC metadata (logical database + optional bearer) for wire calls.
internal static class NexusCallMetadata
{
/// gRPC metadata key for logical database selection (matches Nexus server-side convention).
internal const string DatabaseKey = "x-nexus-database";
/// Builds headers for a single RPC bound to .
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;
}
}