Skip to content

Commit f52ac10

Browse files
mechinnjohanbrandhorst
authored andcommitted
Use github.com/golang/protobuf/descriptor ForMessage and fix CI from not rebasing (#857)
* Use github.com/golang/protobuf/descriptor ForMessage instead of extracting FileDescriptorProto ourselves and fixing generated stream.swagger.json * Fixing bazel and removing dead code * remove required github.com/golang/protobuf/descriptor * revert removing github.com/go-resty/resty
1 parent f336fbc commit f52ac10

File tree

5 files changed

+39
-58
lines changed

5 files changed

+39
-58
lines changed

Gopkg.lock

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/proto/examplepb/stream.swagger.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,12 @@
146146
},
147147
"float_value": {
148148
"type": "number",
149-
"format": "float"
149+
"format": "float",
150+
"default": "0.2",
151+
"description": "Float value field",
152+
"required": [
153+
"float_value"
154+
]
150155
},
151156
"double_value": {
152157
"type": "number",
@@ -264,7 +269,9 @@
264269
"url": "https://github.com/grpc-ecosystem/grpc-gateway"
265270
},
266271
"required": [
267-
"uuid"
272+
"uuid",
273+
"int64_value",
274+
"double_value"
268275
]
269276
},
270277
"examplepbNumericEnum": {

protoc-gen-swagger/genswagger/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ go_library(
1717
"//protoc-gen-grpc-gateway/generator:go_default_library",
1818
"//protoc-gen-swagger/options:go_default_library",
1919
"@com_github_golang_glog//:go_default_library",
20+
"@com_github_golang_protobuf//descriptor:go_default_library_gen",
2021
"@com_github_golang_protobuf//proto:go_default_library",
2122
"@io_bazel_rules_go//proto/wkt:any_go_proto",
2223
"@io_bazel_rules_go//proto/wkt:compiler_plugin_go_proto",

protoc-gen-swagger/genswagger/generator.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ import (
99
"strings"
1010

1111
"github.com/golang/glog"
12+
pbdescriptor "github.com/golang/protobuf/descriptor"
1213
"github.com/golang/protobuf/proto"
14+
protocdescriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
1315
plugin "github.com/golang/protobuf/protoc-gen-go/plugin"
16+
"github.com/golang/protobuf/ptypes/any"
17+
"github.com/grpc-ecosystem/grpc-gateway/internal"
1418
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/descriptor"
1519
gen "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/generator"
1620
swagger_options "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options"
@@ -133,3 +137,25 @@ func (g *generator) Generate(targets []*descriptor.File) ([]*plugin.CodeGenerato
133137
}
134138
return files, nil
135139
}
140+
141+
//AddStreamError Adds grpc.gateway.runtime.StreamError and google.protobuf.Any to registry for stream responses
142+
func AddStreamError(reg *descriptor.Registry) error {
143+
//load internal protos
144+
any := fileDescriptorProtoForMessage(&any.Any{})
145+
streamError := fileDescriptorProtoForMessage(&internal.StreamError{})
146+
if err := reg.Load(&plugin.CodeGeneratorRequest{
147+
ProtoFile: []*protocdescriptor.FileDescriptorProto{
148+
any,
149+
streamError,
150+
},
151+
}); err != nil {
152+
return err
153+
}
154+
return nil
155+
}
156+
157+
func fileDescriptorProtoForMessage(msg pbdescriptor.Message) *protocdescriptor.FileDescriptorProto {
158+
fdp, _ := pbdescriptor.ForMessage(msg)
159+
fdp.SourceCodeInfo = &protocdescriptor.SourceCodeInfo{}
160+
return fdp
161+
}

protoc-gen-swagger/genswagger/template.go

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package genswagger
22

33
import (
4-
"bytes"
5-
"compress/gzip"
64
"encoding/json"
75
"fmt"
86
"os"
@@ -15,9 +13,6 @@ import (
1513
"github.com/golang/glog"
1614
"github.com/golang/protobuf/proto"
1715
pbdescriptor "github.com/golang/protobuf/protoc-gen-go/descriptor"
18-
plugin "github.com/golang/protobuf/protoc-gen-go/plugin"
19-
"github.com/golang/protobuf/ptypes/any"
20-
"github.com/grpc-ecosystem/grpc-gateway/internal"
2116
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway/descriptor"
2217
swagger_options "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options"
2318
)
@@ -326,56 +321,6 @@ func renderMessagesAsDefinition(messages messageMap, d swaggerDefinitionsObject,
326321
}
327322
}
328323

329-
//AddStreamError Adds internal.StreamError and Any to registry for stream responses
330-
func AddStreamError(reg *descriptor.Registry) error {
331-
//load internal protos
332-
any, err := fileDescriptorProtoFromProtoDescriptor(&any.Any{})
333-
if err != nil {
334-
return err
335-
}
336-
streamError, err := fileDescriptorProtoFromProtoDescriptor(&internal.StreamError{})
337-
if err != nil {
338-
return err
339-
}
340-
if err := reg.Load(&plugin.CodeGeneratorRequest{
341-
ProtoFile: []*pbdescriptor.FileDescriptorProto{
342-
any,
343-
streamError,
344-
},
345-
}); err != nil {
346-
return err
347-
}
348-
return nil
349-
}
350-
351-
type protoDescriptor interface {
352-
Descriptor() ([]byte, []int)
353-
}
354-
355-
func fileDescriptorProtoFromProtoDescriptor(pd protoDescriptor) (*pbdescriptor.FileDescriptorProto, error) {
356-
pdd, _ := pd.Descriptor()
357-
r, err := gzip.NewReader(bytes.NewReader(pdd))
358-
if err != nil {
359-
return nil, err
360-
}
361-
var buf bytes.Buffer
362-
_, err = buf.ReadFrom(r)
363-
if err != nil {
364-
return nil, err
365-
}
366-
err = r.Close()
367-
if err != nil {
368-
return nil, err
369-
}
370-
fdp := &pbdescriptor.FileDescriptorProto{}
371-
if err := proto.Unmarshal(buf.Bytes(), fdp); err != nil {
372-
return nil, err
373-
}
374-
//hide the fact that we are loading this from the pb.go instead of the proto directly
375-
fdp.SourceCodeInfo = &pbdescriptor.SourceCodeInfo{}
376-
return fdp, nil
377-
}
378-
379324
func renderMessagesAsStreamDefinition(messages messageMap, d swaggerDefinitionsObject, reg *descriptor.Registry) {
380325
for name, msg := range messages {
381326
if skipRenderingRef(name) {

0 commit comments

Comments
 (0)