Documentation ¶
Overview ¶
Package router provides base router for using in chaincode Invoke function
Index ¶
- Constants
- Variables
- func EmptyContextHandler(c Context) (interface{}, error)
- func NewContext(stub shim.ChaincodeStubInterface, logger *zap.Logger) *context
- func NewLogger(name string) *zap.Logger
- func ValidateRequest(request Validator) error
- type Chaincode
- type Context
- type ContextHandlerFunc
- type ContextMiddlewareFunc
- type ContextResponse
- type Group
- func (g *Group) After(middleware ...MiddlewareFunc) *Group
- func (g *Group) Context(stub shim.ChaincodeStubInterface) Context
- func (g *Group) ContextHandler(path string, fn ContextHandlerFunc) *Group
- func (g *Group) Group(path string) *Group
- func (g *Group) Handle(stub shim.ChaincodeStubInterface) peer.Response
- func (g *Group) HandleInit(stub shim.ChaincodeStubInterface) peer.Response
- func (g *Group) Init(handler HandlerFunc, middleware ...MiddlewareFunc) *Group
- func (g *Group) Invoke(path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Group
- func (g *Group) Pre(middleware ...ContextMiddlewareFunc) *Group
- func (g *Group) Query(path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Group
- func (g *Group) StubHandler(path string, fn StubHandlerFunc) *Group
- func (g *Group) Use(middleware ...MiddlewareFunc) *Group
- type HandlerFunc
- type HandlerMeta
- type InterfaceMap
- type MethodType
- type MiddlewareFunc
- type Response
- type Router
- type StubHandlerFunc
- type Validator
Constants ¶
const DefaultParam = `default`
DefaultParam default parameter name
Variables ¶
var ( // ErrEmptyArgs occurs when trying to invoke chaincode method with empty args ErrEmptyArgs = errors.New(`empty args`) // ErrMethodNotFound occurs when trying to invoke non existent chaincode method ErrMethodNotFound = errors.New(`chaincode method not found`) // ErrArgsNumMismatch occurs when the number of declared and the number of arguments passed does not match ErrArgsNumMismatch = errors.New(`chaincode method args count mismatch`) // ErrHandlerError error in handler ErrHandlerError = errors.New(`router handler error`) )
var ErrInvalidRequest = errors.New(`invalid request`)
Functions ¶
func EmptyContextHandler ¶ added in v0.3.0
func NewContext ¶ added in v0.6.1
func NewContext(stub shim.ChaincodeStubInterface, logger *zap.Logger) *context
NewContext creates new instance of router.Context
func ValidateRequest ¶ added in v0.7.8
ValidateRequest use Validator interface and create error, allow to use error.Is(ErrInvalidRequest)
Types ¶
type Chaincode ¶
type Chaincode struct {
// contains filtered or unexported fields
}
Chaincode default chaincode implementation with router
func NewChaincode ¶
NewChaincode new default chaincode implementation
type Context ¶
type Context interface { Clone() Context Stub() shim.ChaincodeStubInterface // Client returns invoker ClientIdentity Client() (cid.ClientIdentity, error) // Response returns response builder Response() Response Logger() *zap.Logger Path() string Handler() *HandlerMeta SetHandler(*HandlerMeta) State() state.State UseState(state.State) Context // Time returns txTimestamp Time() (time.Time, error) ReplaceArgs(args [][]byte) Context // replace args, for usage in preMiddleware GetArgs() [][]byte // Deprecated: Use Params instead. Args() InterfaceMap // Deprecated: Use Arg instead. Arg(string) interface{} // Deprecated: Use ParamString instead. ArgString(string) string // Deprecated: Use ParamBytes instead. ArgBytes(string) []byte // Deprecated: Use ParamInt instead. ArgInt(string) int // Deprecated: Use SetParam instead. SetArg(string, interface{}) // Params returns parameter values. Params() InterfaceMap // Param returns parameter value. Param(name ...string) interface{} // ParamString returns parameter value as string. ParamString(name string) string // ParamBytes returns parameter value as bytes. ParamBytes(name string) []byte // ParamInt returns parameter value as int. ParamInt(name string) int // ParamInt32 returns parameter value as int32. ParamInt32(name string) int32 // SetParam sets parameter value. SetParam(name string, value interface{}) // Get retrieves data from the context. Get(key string) interface{} // Set saves data in the context. Set(key string, value interface{}) // Deprecated: Use Event().Set() instead SetEvent(string, interface{}) error Event() state.Event UseEvent(state.Event) Context }
Context of chaincode invoke
func ContextWithStateCache ¶ added in v0.7.4
type ContextHandlerFunc ¶
ContextHandlerFunc use stub context as input parameter
type ContextMiddlewareFunc ¶
type ContextMiddlewareFunc func(nextOrPrev ContextHandlerFunc, pos ...int) ContextHandlerFunc
ContextMiddlewareFunc middleware for ContextHandlerFun
type ContextResponse ¶
type ContextResponse struct {
// contains filtered or unexported fields
}
ContextResponse implementation
func (ContextResponse) Create ¶
func (c ContextResponse) Create(data interface{}, err interface{}) peer.Response
Create returns error response if err != nil
func (ContextResponse) Error ¶
func (c ContextResponse) Error(err interface{}) peer.Response
Error response
func (ContextResponse) Success ¶
func (c ContextResponse) Success(data interface{}) peer.Response
Success response
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
Group of chain code functions
func (*Group) After ¶ added in v0.5.3
func (g *Group) After(middleware ...MiddlewareFunc) *Group
func (*Group) Context ¶
func (g *Group) Context(stub shim.ChaincodeStubInterface) Context
Context returns chain code invoke context for provided path and stub
func (*Group) ContextHandler ¶
func (g *Group) ContextHandler(path string, fn ContextHandlerFunc) *Group
ContextHandler adds new context handler using presented path
func (*Group) Group ¶
Group gets new group using presented path New group can be used as independent
func (*Group) Handle ¶
func (g *Group) Handle(stub shim.ChaincodeStubInterface) peer.Response
Handle used for using in CC Invoke function Must be called after adding new routes using Add function
func (*Group) HandleInit ¶
func (g *Group) HandleInit(stub shim.ChaincodeStubInterface) peer.Response
HandleInit handle chaincode init method
func (*Group) Init ¶
func (g *Group) Init(handler HandlerFunc, middleware ...MiddlewareFunc) *Group
func (*Group) Invoke ¶
func (g *Group) Invoke(path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Group
Invoke defines handler and middleware for invoke chaincode method (state change, need to send to orderer)
func (*Group) Pre ¶
func (g *Group) Pre(middleware ...ContextMiddlewareFunc) *Group
func (*Group) Query ¶
func (g *Group) Query(path string, handler HandlerFunc, middleware ...MiddlewareFunc) *Group
Query defines handler and middleware for querying chaincode method (no state change, no send to orderer)
func (*Group) StubHandler ¶
func (g *Group) StubHandler(path string, fn StubHandlerFunc) *Group
StubHandler adds new stub handler using presented path
func (*Group) Use ¶
func (g *Group) Use(middleware ...MiddlewareFunc) *Group
Use middleware function in chain code functions group
type HandlerFunc ¶
HandlerFunc returns result as interface and error, this is converted to peer.Response via response.Create
type HandlerMeta ¶ added in v0.5.3
type HandlerMeta struct { Hdl HandlerFunc Type MethodType }
type MethodType ¶ added in v0.5.3
type MethodType string
const ( InitFunc = `init` MethodInvoke MethodType = `invoke` MethodQuery MethodType = `query` )
type MiddlewareFunc ¶
type MiddlewareFunc func(HandlerFunc, ...int) HandlerFunc
MiddlewareFunc middleware for HandlerFunc
type Response ¶
type Response interface { Error(err interface{}) peer.Response Success(data interface{}) peer.Response Create(data interface{}, err interface{}) peer.Response }
Response chaincode interface
type Router ¶ added in v0.5.3
type Router interface { HandleInit(shim.ChaincodeStubInterface) Handle(shim.ChaincodeStubInterface) Query(path string, handler HandlerFunc, middleware ...MiddlewareFunc) Router Invoke(path string, handler HandlerFunc, middleware ...MiddlewareFunc) Router }
type StubHandlerFunc ¶
type StubHandlerFunc func(shim.ChaincodeStubInterface) peer.Response
StubHandlerFunc acts as raw chaincode invoke method, accepts stub and returns peer.Response