|
|
|
@ -97,11 +97,22 @@ func daemon(config *config, lisCfg *listenerCfg) error {
|
|
|
|
|
}
|
|
|
|
|
defer grpcListener.Close()
|
|
|
|
|
|
|
|
|
|
// 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.
|
|
|
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
|
|
|
defer cancel()
|
|
|
|
|
mux := proxy.NewServeMux()
|
|
|
|
|
mux := proxy.NewServeMux(customMarshalerOption)
|
|
|
|
|
proxyOpts := []grpc.DialOption{grpc.WithInsecure()}
|
|
|
|
|
err = looprpc.RegisterSwapClientHandlerFromEndpoint(
|
|
|
|
|
ctx, mux, config.RPCListen, proxyOpts,
|
|
|
|
|