Skip to content

Commit

Permalink
add gRPC Web support (#77)
Browse files Browse the repository at this point in the history
  • Loading branch information
ktr0731 authored Aug 10, 2018
1 parent 4c0aca7 commit 10a5376
Show file tree
Hide file tree
Showing 14 changed files with 359 additions and 38 deletions.
47 changes: 36 additions & 11 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ deadcode-test:

.PHONY: vet
vet:
gometalinter --vendor --disable-all --enable=vet ./...
@gometalinter --vendor --disable-all --enable=vet ./...

.PHONY: deadcode
deadcode:
gometalinter --vendor --disable-all --enable=deadcode ./...
@gometalinter --vendor --disable-all --enable=deadcode ./...

.PHONY: lint
lint:
Expand Down
13 changes: 13 additions & 0 deletions adapter/controller/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ Options:
--file FILE, -f FILE %s
--path PATH %s
--header HEADER %s
--web %s
--reflection, -r %s
--help, -h %s
Expand All @@ -83,6 +84,7 @@ func (c *CLI) parseFlags(args []string) *options {
file = "the script file which will be executed by (used only CLI mode)"
path = "proto file paths"
header = "default headers which set to each requests (example: foo=bar)"
web = "use gRPC Web protocol"
reflection = "use gRPC reflection"

version = "display version and exit"
Expand All @@ -108,6 +110,7 @@ func (c *CLI) parseFlags(args []string) *options {
file,
path,
header,
web,
reflection,
version,
help,
Expand All @@ -132,6 +135,7 @@ func (c *CLI) parseFlags(args []string) *options {
f.StringVar(&opts.file, "f", "", file)
f.Var(&opts.path, "path", path)
f.Var(&opts.header, "header", header)
f.BoolVar(&opts.web, "web", false, web)
f.BoolVar(&opts.reflection, "reflection", false, reflection)
f.BoolVar(&opts.reflection, "r", false, reflection)
f.BoolVar(&opts.version, "version", false, version)
Expand Down Expand Up @@ -161,6 +165,7 @@ type options struct {
file string
path optStrSlice
header optStrSlice
web bool
reflection bool

// meta options
Expand Down Expand Up @@ -560,6 +565,10 @@ func mergeConfig(cfg *config.Config, opt *options, proto []string) (*config.Conf
mc.REPL.ShowSplashText = false
}

if opt.web {
mc.Request.Web = true
}

if opt.reflection {
mc.Server.Reflection = true
}
Expand All @@ -581,6 +590,10 @@ func checkPrecondition(w *wrappedConfig) error {
return errors.New("cannot use both of --cli and --repl options")
}

if w.cfg.Server.Reflection && w.cfg.Request.Web {
return errors.New("gRPC Web server reflection is not supported yet")
}

return nil
}

Expand Down
12 changes: 6 additions & 6 deletions adapter/gateway/grpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,12 +83,12 @@ func (s *clientStream) Send(m proto.Message) error {
return s.cs.SendMsg(m)
}

func (s *clientStream) CloseAndReceive(res proto.Message) error {
func (s *clientStream) CloseAndReceive(res *proto.Message) error {
if err := s.cs.CloseSend(); err != nil {
return errors.Wrap(err, "failed to close client stream")
}

err := s.cs.RecvMsg(res)
err := s.cs.RecvMsg(*res)
if err != nil && err != io.EOF {
return errors.Wrap(err, "failed to close and receive response")
}
Expand All @@ -111,8 +111,8 @@ type serverStream struct {
*clientStream
}

func (s *serverStream) Receive(res proto.Message) error {
return s.cs.RecvMsg(res)
func (s *serverStream) Receive(res *proto.Message) error {
return s.cs.RecvMsg(*res)
}

func (c *GRPCClient) NewServerStream(ctx context.Context, rpc entity.RPC) (entity.ServerStream, error) {
Expand All @@ -131,8 +131,8 @@ func (s *bidiStream) Send(res proto.Message) error {
return s.s.cs.SendMsg(res)
}

func (s *bidiStream) Receive(res proto.Message) error {
return s.s.cs.RecvMsg(res)
func (s *bidiStream) Receive(res *proto.Message) error {
return s.s.cs.RecvMsg(*res)
}

func (s *bidiStream) Close() error {
Expand Down
Loading

0 comments on commit 10a5376

Please sign in to comment.