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; } }