From be893e35804acd8e7a75f8800dedbedc6c8ffc3b Mon Sep 17 00:00:00 2001 From: Michal Liziciar Date: Thu, 7 Nov 2024 10:52:13 +0100 Subject: [PATCH] Add possibility enable useProtoNames in encoder. --- README.md | 1 + cmd/service/main.go | 2 ++ config-example.yaml | 2 +- pkg/service/jsonencoder/encoder.go | 2 ++ pkg/transport/status/status.go | 4 ++-- 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 25a36ae..a33393d 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Usage of ./grpc-rest-proxy: --transport.http.server.gracefulTimeout duration graceful timeout (default 5s) --transport.http.server.readHeaderTimeout duration read header timeout (default 5s) --transport.http.server.readTimeout duration read timeout (default 10s) + --service.jsonencoder.useProtoNames use proto names in JSON response (instead of camel case) --service.jsonencoder.emitUnpopulated emit unpopulated fields in JSON response for empty gRPC values --service.jsonencoder.emitDefaultValues include default values in JSON response for empty gRPC values -v, --version print version diff --git a/cmd/service/main.go b/cmd/service/main.go index 819bbc1..121dbb1 100644 --- a/cmd/service/main.go +++ b/cmd/service/main.go @@ -30,6 +30,7 @@ const ( grpcServerAddr = "0.0.0.0:50051" tls = false tlsSkipverify = false + defaultUseProtoNames = false defaultEmitUnpopulated = false defaultEmitDefaultValues = false ) @@ -61,6 +62,7 @@ func main() { pflag.Bool("gateways.grpc.client.tls", tls, "use TLS for gRPC connection") pflag.Bool("gateways.grpc.client.tlsSkipverify", tlsSkipverify, "skip TLS verification") + pflag.Bool("service.jsonencoder.useProtoNames", defaultUseProtoNames, "use proto names in JSON response (instead of camel case)") pflag.Bool("service.jsonencoder.emitUnpopulated", defaultEmitUnpopulated, "emit unpopulated fields in JSON response for empty gRPC values") pflag.Bool("service.jsonencoder.emitDefaultValues", defaultEmitDefaultValues, "include default values in JSON response for empty gRPC values") //nolint:lll diff --git a/config-example.yaml b/config-example.yaml index f8aec5d..70b3dc7 100644 --- a/config-example.yaml +++ b/config-example.yaml @@ -24,5 +24,5 @@ gateways: client: targetAddr: "0.0.0.0:50051" requestTimeout: 5s - tls: true + tls: false tlsSkipverify: true diff --git a/pkg/service/jsonencoder/encoder.go b/pkg/service/jsonencoder/encoder.go index a763243..85c7c8f 100644 --- a/pkg/service/jsonencoder/encoder.go +++ b/pkg/service/jsonencoder/encoder.go @@ -12,6 +12,7 @@ import ( ) type Config struct { + UseProtoNames bool `mapstructure:"UseProtoNames"` EmitUnpopulated bool `mapstructure:"emitUnpopulated"` EmitDefaultValues bool `mapstructure:"emitDefaultValues"` } @@ -25,6 +26,7 @@ type Encoder struct { func New(cfg *Config, typeResolver *protoregistry.Types) Encoder { return Encoder{ opts: protojson.MarshalOptions{ + UseProtoNames: cfg.UseProtoNames, EmitUnpopulated: cfg.EmitUnpopulated, EmitDefaultValues: cfg.EmitDefaultValues, Resolver: typeResolver, diff --git a/pkg/transport/status/status.go b/pkg/transport/status/status.go index 4ff0d3e..cdae612 100644 --- a/pkg/transport/status/status.go +++ b/pkg/transport/status/status.go @@ -11,7 +11,7 @@ import ( func FromHTTPCode(code int) *Error { return &Error{ - Code: int32(code), + Code: int32(code), //nolint:gosec Message: http.StatusText(code), } } @@ -30,7 +30,7 @@ func FromGRPC(status *grpcStatus.Status) *Error { } return &Error{ - Code: int32(httpStatus), + Code: int32(httpStatus), //nolint:gosec Message: msg, Details: details, }