server: emit default values in JSON

Fixes #208 by always rendering the default values in a JSON response,
even if they are "falsey" in the RPC message.
This commit is contained in:
Oliver Gugger 2021-02-02 09:57:05 +01:00
parent 5cf3c1a4e8
commit f163ac85d8
No known key found for this signature in database
GPG key ID: 8E4256593F177720

View file

@ -195,11 +195,23 @@ func (s *Server) Start() error {
s.cfg.RPCListen)
}
// The default JSON marshaler of the REST proxy only sets
// OrigName to true, which instructs it to use the same field
// names as specified in the proto file and not switch to camel
// case. What we also want is that the marshaler prints all
// values, even if they are falsey.
customMarshalerOption := proxy.WithMarshalerOption(
proxy.MIMEWildcard, &proxy.JSONPb{
OrigName: true,
EmitDefaults: true,
},
)
// We'll also create and start an accompanying proxy to serve
// clients through REST.
var ctx context.Context
ctx, s.restCancel = context.WithCancel(context.Background())
mux := proxy.NewServeMux()
mux := proxy.NewServeMux(customMarshalerOption)
proxyOpts := []grpc.DialOption{
grpc.WithTransportCredentials(*restClientCreds),
}