Skip to content

Commit

Permalink
feat: export gateway.Server to let users add middlewares (#2157)
Browse files Browse the repository at this point in the history
  • Loading branch information
kevwan authored Jul 16, 2022
1 parent 4d7dae9 commit 453fa30
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 17 deletions.
1 change: 1 addition & 0 deletions gateway/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ type (
// Rpc is the gRPC rpc method, with format of package.service/method
Rpc string
}

// upstream is the configuration for upstream.
upstream struct {
// Grpc is the target of upstream.
Expand Down
23 changes: 11 additions & 12 deletions gateway/requestparser.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,23 @@ import (
"github.com/zeromicro/go-zero/rest/pathvar"
)

func buildJsonRequestParser(v interface{}, resolver jsonpb.AnyResolver) (grpcurl.RequestParser, error) {
var buf bytes.Buffer
if err := json.NewEncoder(&buf).Encode(v); err != nil {
return nil, err
}

return grpcurl.NewJSONRequestParser(&buf, resolver), nil
}

func newRequestParser(r *http.Request, resolver jsonpb.AnyResolver) (grpcurl.RequestParser, error) {
vars := pathvar.Vars(r)
if len(vars) == 0 {
return grpcurl.NewJSONRequestParser(r.Body, resolver), nil
}

if r.ContentLength == 0 {
var buf bytes.Buffer
if err := json.NewEncoder(&buf).Encode(vars); err != nil {
return nil, err
}

return grpcurl.NewJSONRequestParser(&buf, resolver), nil
return buildJsonRequestParser(vars, resolver)
}

m := make(map[string]interface{})
Expand All @@ -34,10 +38,5 @@ func newRequestParser(r *http.Request, resolver jsonpb.AnyResolver) (grpcurl.Req
m[k] = v
}

var buf bytes.Buffer
if err := json.NewEncoder(&buf).Encode(m); err != nil {
return nil, err
}

return grpcurl.NewJSONRequestParser(&buf, resolver), nil
return buildJsonRequestParser(m, resolver)
}
10 changes: 5 additions & 5 deletions gateway/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ import (

// Server is a gateway server.
type Server struct {
svr *rest.Server
*rest.Server
upstreams []upstream
timeout time.Duration
}

// MustNewServer creates a new gateway server.
func MustNewServer(c GatewayConf) *Server {
return &Server{
svr: rest.MustNewServer(c.RestConf),
Server: rest.MustNewServer(c.RestConf),
upstreams: c.Upstreams,
timeout: c.Timeout,
}
Expand All @@ -36,12 +36,12 @@ func MustNewServer(c GatewayConf) *Server {
// Start starts the gateway server.
func (s *Server) Start() {
logx.Must(s.build())
s.svr.Start()
s.Server.Start()
}

// Stop stops the gateway server.
func (s *Server) Stop() {
s.svr.Stop()
s.Server.Stop()
}

func (s *Server) build() error {
Expand Down Expand Up @@ -69,7 +69,7 @@ func (s *Server) build() error {
}, func(pipe <-chan interface{}, cancel func(error)) {
for item := range pipe {
route := item.(rest.Route)
s.svr.AddRoute(route)
s.Server.AddRoute(route)
}
})
}
Expand Down

0 comments on commit 453fa30

Please sign in to comment.