2015-12-03 01:02:14 +00:00
|
|
|
package client
|
|
|
|
|
2015-11-26 20:36:42 +00:00
|
|
|
/*
|
|
|
|
Wrapper is a type of middleware for the go-micro client. It allows
|
|
|
|
the client to be "wrapped" so that requests and responses can be intercepted
|
|
|
|
to perform extra requirements such as auth, tracing, monitoring, logging, etc.
|
|
|
|
|
|
|
|
Example usage:
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"github.com/micro/go-micro/client"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
type LogWrapper struct {
|
|
|
|
client.Client
|
|
|
|
}
|
|
|
|
|
2015-12-08 19:37:27 +00:00
|
|
|
func (l *LogWrapper) Call(ctx context.Context, req client.Request, rsp interface{}, opts ...client.CallOption) error {
|
2015-11-26 20:36:42 +00:00
|
|
|
log.Println("Making request to service " + req.Service() + " method " + req.Method())
|
|
|
|
return w.Client.Call(ctx, req, rsp)
|
|
|
|
}
|
|
|
|
|
|
|
|
func Wrapper(c client.Client) client.Client {
|
|
|
|
return &LogWrapper{c}
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
c := client.NewClient(client.Wrap(Wrapper))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Wrapper wraps a client and returns a client
|
|
|
|
type Wrapper func(Client) Client
|
2015-12-18 01:01:59 +00:00
|
|
|
|
|
|
|
// StreamWrapper wraps a Stream and returns the equivalent
|
|
|
|
type StreamWrapper func(Streamer) Streamer
|