feat(grpc): configurable default headers on shared gRPC client#1656
feat(grpc): configurable default headers on shared gRPC client#1656Freyskeyd wants to merge 1 commit into
Conversation
Add an optional Headers map to grpc.ClientConfig whose entries are appended to every outgoing request on that client. Configured x-client-version / x-client-type override the built-in defaults (single value, not duplicated); other keys are added alongside. Generalize the version-header interceptor into HeaderInterceptor(headers) fed by mergeHeaders(cfg.Headers); empty config preserves current behavior.
|
Claude finished @Freyskeyd's task in 2m 21s —— View job Code Review Complete ✅🚀 What's NewThis PR adds configurable default metadata headers to the shared gRPC client, allowing per-client customization of 🐛 Bug FixesNone 📋 Config UpdatesNew optional per-client field [AggSender.AgglayerClient.GRPC.Headers]
"x-client-type" = "aggkit-aggsender"
"x-client-version" = "v1.2.3-rc1"Default behavior: If
|
Make the default metadata headers on the shared gRPC client configurable
per client, so x-client-version / x-client-type can be overridden
(e.g. for tracing/observability).
🔄 Changes Summary
Headersmap togrpc.ClientConfig; entries are appendedto every outgoing request on that client.
x-client-version/x-client-typeoverride the built-indefaults (single value, not duplicated); other keys are added alongside.
HeaderInterceptor(headers)fed by
mergeHeaders(cfg.Headers); empty config preserves current behavior.📋 Config Updates
GRPC.Headers(map). Example:✅ Testing
mergeHeaders(defaults / overrides / case-normalization) andHeaderInterceptor(override-once, arbitrary header, existing cases).go build ./...,gofmt,go vet, package tests for grpc + consumers,and
golangci-lint v2.4.0(0 issues).📝 Notes
VersionHeaderInterceptor()->HeaderInterceptor(map[string]string)(only consumer isNewClient).metadata surfaces at gRPC call time.