1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-01-10 00:29:01 +02:00
kratos/transport/http/calloption.go
longxboy eb958b2093
add path for rpc stub (#947)
* add path for rpc stub

* fix http body and response_body

Co-authored-by: chenzhihui <zhihui_chen@foxmail.com>
2021-05-26 14:23:43 +08:00

67 lines
1.6 KiB
Go

package http
// CallOption configures a Call before it starts or extracts information from
// a Call after it completes.
type CallOption interface {
// before is called before the call is sent to any server. If before
// returns a non-nil error, the RPC fails with that error.
before(*callInfo) error
// after is called after the call has completed. after cannot return an
// error, so any failures should be reported via output parameters.
after(*callInfo, *csAttempt)
}
type callInfo struct {
pathPattern string
method string
}
// EmptyCallOption does not alter the Call configuration.
// It can be embedded in another structure to carry satellite data for use
// by interceptors.
type EmptyCallOption struct{}
func (EmptyCallOption) before(*callInfo) error { return nil }
func (EmptyCallOption) after(*callInfo, *csAttempt) {}
type csAttempt struct{}
// PathPattern is pathpattern
func PathPattern(pathPattern string) CallOption {
return PathPatternCallOption{PathPattern: pathPattern}
}
// PathPatternCallOption is BodyPattern
type PathPatternCallOption struct {
EmptyCallOption
PathPattern string
}
func (o PathPatternCallOption) before(c *callInfo) error {
c.pathPattern = o.PathPattern
return nil
}
// Method is Method
func Method(method string) CallOption {
return MethodCallOption{Method: method}
}
// MethodCallOption is BodyCallOption
type MethodCallOption struct {
EmptyCallOption
Method string
}
func (o MethodCallOption) before(c *callInfo) error {
c.method = o.Method
return nil
}
func defaultCallInfo() callInfo {
return callInfo{
method: "POST",
}
}