Skip to content

Commit 3be2272

Browse files
authored
Port protojson coding stack to support shorthand HTTP payloads (#134)
Our old shorthand payload support was built upon gogo/protobuf's json coding stack, which won't work with google/protobuf. This commit ports and adapts the official protojson coding code (and some of its internals) to allow for both: 1. shorthand JSON payloads for our HTTP API 2. efficient support for both new and old-style JSON enums This replaces the recursive fixup code I included in my previous proto work.
1 parent dbb5d31 commit 3be2272

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+18604
-695
lines changed

.gitattributes

+2
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@
77
# for more info.
88
*.pb.go linguist-generated
99
*.mock.go linguist-generated
10+
internal/protojson/** linguist-vendored
11+
internal/strcase/** linguist-vendored

Makefile

+4-2
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,11 @@ go-grpc: clean .go-helpers-installed $(PROTO_OUT)
6363
fix-path: go-grpc
6464
mv -f $(PROTO_OUT)/temporal/api/* $(PROTO_OUT) && rm -rf $(PROTO_OUT)/temporal
6565

66+
# Copy the payload helpers
6667
copy-helpers:
67-
# Copy the payload helpers
68+
chmod +w $(PROTO_OUT)/common/v1/payload_json.go 2>/dev/null || true
6869
cp $(PROTO_OUT)/internal/temporalcommonv1/payload_json.go $(PROTO_OUT)/common/v1/
70+
chmod -w $(PROTO_OUT)/common/v1/payload_json.go
6971

7072
# The generated enums are go are just plain terrible, so we fix them
7173
# by removing the typename prefixes. We already made good choices with our enum
@@ -145,4 +147,4 @@ check: generatorcheck
145147
clean:
146148
printf $(COLOR) "Deleting generated go files..."
147149
# Delete all directories with *.pb.go and *.mock.go files from $(PROTO_OUT)
148-
find $(PROTO_OUT) \( -name "*.pb.go" -o -name "*.mock.go" -o -name "*.go-helpers.go" \) | xargs -I{} dirname {} | sort -u | xargs rm -rf
150+
find $(PROTO_OUT) \( -name "*.pb.go" -o -name "*.mock.go" -o -name "*.go-helpers.go" \) | xargs -I{} dirname {} | egrep -v 'testprotos' | sort -u | xargs rm -rf

cmd/copyright/licensegen.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ import (
2828
"bufio"
2929
"flag"
3030
"fmt"
31-
"io/ioutil"
3231
"os"
3332
"path/filepath"
33+
"regexp"
3434
"strings"
3535
)
3636

@@ -52,8 +52,9 @@ type (
5252
// licenseFileName is the name of the license file
5353
const licenseFileName = "LICENSE"
5454

55-
// unique prefix that identifies a license header
56-
const licenseHeaderPrefix = "// The MIT License"
55+
// unique prefix that identifies a license header. It matches both our
56+
// MIT license and the BSD_style license of the vendored Go code
57+
var licenseRgx = regexp.MustCompile("^// (Copyright|The MIT License)")
5758

5859
var (
5960
// directories to be excluded
@@ -140,8 +141,8 @@ func (task *addLicenseHeaderTask) handleFile(path string, fileInfo os.FileInfo,
140141
}
141142
f.Close()
142143

143-
if strings.Contains(firstLine, licenseHeaderPrefix) {
144-
return nil // file already has the copyright header
144+
if licenseRgx.MatchString(firstLine) {
145+
return nil // file already licensed
145146
}
146147

147148
// at this point, src file is missing the header
@@ -153,12 +154,12 @@ func (task *addLicenseHeaderTask) handleFile(path string, fileInfo os.FileInfo,
153154

154155
// Used as part of the cli to write licence headers on files, does not use user supplied input so marked as nosec
155156
// #nosec
156-
data, err := ioutil.ReadFile(path)
157+
data, err := os.ReadFile(path)
157158
if err != nil {
158159
return err
159160
}
160161

161-
return ioutil.WriteFile(path, []byte(task.license+string(data)), defaultFilePerms)
162+
return os.WriteFile(path, []byte(task.license+string(data)), defaultFilePerms)
162163
}
163164

164165
func isFileAutogenerated(path string) bool {

cmd/proxygenerator/go.mod

+4-4
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@ require (
1313
github.com/golang/protobuf v1.5.3 // indirect
1414
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1 // indirect
1515
golang.org/x/mod v0.11.0 // indirect
16-
golang.org/x/net v0.18.0 // indirect
16+
golang.org/x/net v0.19.0 // indirect
1717
golang.org/x/sys v0.15.0 // indirect
1818
golang.org/x/text v0.14.0 // indirect
19-
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect
20-
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect
21-
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
19+
google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 // indirect
20+
google.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4 // indirect
21+
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect
2222
google.golang.org/grpc v1.59.0 // indirect
2323
google.golang.org/protobuf v1.31.0 // indirect
2424
)

cmd/proxygenerator/go.sum

+12-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
12
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
23
github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
34
github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
45
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
56
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
67
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1 h1:6UKoz5ujsI55KNpsJH3UwCq3T8kKbZwNZBNPuTTje8U=
78
github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.1/go.mod h1:YvJ2f6MplWDhfxiUC3KpyTy76kYUZA4W3pTv/wdKQ9Y=
9+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
10+
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
811
golang.org/x/mod v0.11.0 h1:bUO06HqtnRcc/7l71XBe4WcqTZ+3AH1J59zWDDwLKgU=
912
golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
10-
golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg=
11-
golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ=
13+
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
14+
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
1215
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
1316
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
1417
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
@@ -17,15 +20,16 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
1720
golang.org/x/tools v0.10.0 h1:tvDr/iQoUqNdohiYm0LmmKcBk+q86lb9EprIUFhHHGg=
1821
golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM=
1922
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
20-
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg=
21-
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY=
22-
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY=
23-
google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI=
24-
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I=
25-
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc=
23+
google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 h1:W12Pwm4urIbRdGhMEg2NM9O3TWKjNcxQhs46V0ypf/k=
24+
google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic=
25+
google.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4 h1:ZcOkrmX74HbKFYnpPY8Qsw93fC29TbJXspYKaBkSXDQ=
26+
google.golang.org/genproto/googleapis/api v0.0.0-20231127180814-3a041ad873d4/go.mod h1:k2dtGpRrbsSyKcNPKKI5sstZkrNCZwpU/ns96JoHbGg=
27+
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE=
28+
google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM=
2629
google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
2730
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
2831
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
2932
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
3033
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
3134
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
35+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

0 commit comments

Comments
 (0)