Documentation ¶
Overview ¶
Package jsonrpc helps JSON-RPC 2.0 implements.
Index ¶
- Constants
- func ParseRequest(r *http.Request) ([]*Request, []byte, bool, *Error)
- func SendResponse(w http.ResponseWriter, resp []*Response, batch bool) error
- type Context
- type Error
- type ErrorCode
- type Handler
- type HandlerChain
- type Metadata
- type MethodReference
- type MethodRepository
- func (mr *MethodRepository) InvokeMethod(c Context, r *Request) *Response
- func (mr *MethodRepository) InvokeMiddleware(c Context, r *Request) *Response
- func (mr *MethodRepository) Methods() map[string]Metadata
- func (mr *MethodRepository) RegisterMethod(method string, params, result interface{}, h ...Handler) error
- func (mr *MethodRepository) ServeDebug(w http.ResponseWriter, r *http.Request)
- func (mr *MethodRepository) ServeHTTP(w http.ResponseWriter, r *http.Request)
- func (mr *MethodRepository) TakeMethod(r *Request) (HandlerChain, *Error)
- func (mr *MethodRepository) Use(middleware ...MiddlewareFunc)
- type MiddlewareChain
- type MiddlewareFunc
- type Request
- type Response
Constants ¶
const (
// Version is JSON-RPC 2.0.
Version = "2.0"
)
Variables ¶
This section is empty.
Functions ¶
func ParseRequest ¶
ParseRequest parses a HTTP request to JSON-RPC request.
func SendResponse ¶
func SendResponse(w http.ResponseWriter, resp []*Response, batch bool) error
SendResponse writes JSON-RPC response.
Types ¶
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
Context body is http post data
func WithRequestID ¶
func WithRequestID(c Context, id *fastjson.RawMessage) Context
WithRequestID adds request id to context.
func (*Context) RequestID ¶
func (c *Context) RequestID() *fastjson.RawMessage
RequestID takes request id from context.
type Error ¶
type Error struct { Code ErrorCode `json:"code"` Message string `json:"message"` Data interface{} `json:"data,omitempty"` }
An Error is a wrapper for a JSON interface value.
func ErrInvalidParams ¶
func ErrInvalidParams() *Error
ErrInvalidParams returns invalid params error.
func ErrInvalidRequest ¶
func ErrInvalidRequest() *Error
ErrInvalidRequest returns invalid request error.
func ErrMethodNotFound ¶
func ErrMethodNotFound() *Error
ErrMethodNotFound returns method not found error.
func Unmarshal ¶
func Unmarshal(params *fastjson.RawMessage, dst interface{}) *Error
Unmarshal decodes JSON-RPC params.
type ErrorCode ¶
type ErrorCode int
A ErrorCode by JSON-RPC 2.0.
const ( // ErrorCodeParse is parse error code. ErrorCodeParse ErrorCode = -32700 // ErrorCodeInvalidRequest is invalid request error code. ErrorCodeInvalidRequest ErrorCode = -32600 // ErrorCodeMethodNotFound is method not found error code. ErrorCodeMethodNotFound ErrorCode = -32601 // ErrorCodeInvalidParams is invalid params error code. ErrorCodeInvalidParams ErrorCode = -32602 // ErrorCodeInternal is internal error code. ErrorCodeInternal ErrorCode = -32603 )
type Handler ¶
type Handler interface {
ServeJSONRPC(c *Context, params *fastjson.RawMessage) (result interface{}, err *Error)
}
Handler links a method of JSON-RPC request.
type Metadata ¶
type Metadata struct { Handler HandlerChain Params interface{} Result interface{} }
Metadata has method meta data.
type MethodReference ¶
type MethodReference struct { Name string `json:"name"` Handler string `json:"handler"` Params *jsonschema.Schema `json:"params,omitempty"` Result *jsonschema.Schema `json:"result,omitempty"` }
A MethodReference is a reference of JSON-RPC method.
type MethodRepository ¶
type MethodRepository struct { Middlewares MiddlewareChain // contains filtered or unexported fields }
A MethodRepository has JSON-RPC method functions.
func NewMethodRepository ¶
func NewMethodRepository() *MethodRepository
NewMethodRepository returns new MethodRepository.
func (*MethodRepository) InvokeMethod ¶
func (mr *MethodRepository) InvokeMethod(c Context, r *Request) *Response
InvokeMethod invokes JSON-RPC method.
func (*MethodRepository) InvokeMiddleware ¶
func (mr *MethodRepository) InvokeMiddleware(c Context, r *Request) *Response
InvokeMiddleware invokes middleware method
func (*MethodRepository) Methods ¶
func (mr *MethodRepository) Methods() map[string]Metadata
Methods returns registered methods.
func (*MethodRepository) RegisterMethod ¶
func (mr *MethodRepository) RegisterMethod(method string, params, result interface{}, h ...Handler) error
RegisterMethod registers jsonrpc.Func to MethodRepository.
func (*MethodRepository) ServeDebug ¶
func (mr *MethodRepository) ServeDebug(w http.ResponseWriter, r *http.Request)
ServeDebug views registered method list.
func (*MethodRepository) ServeHTTP ¶
func (mr *MethodRepository) ServeHTTP(w http.ResponseWriter, r *http.Request)
ServeHTTP provides basic JSON-RPC handling.
func (*MethodRepository) TakeMethod ¶
func (mr *MethodRepository) TakeMethod(r *Request) (HandlerChain, *Error)
TakeMethod takes jsonrpc.Func in MethodRepository.
func (*MethodRepository) Use ¶
func (mr *MethodRepository) Use(middleware ...MiddlewareFunc)
Use registers middleware function
type MiddlewareChain ¶
type MiddlewareChain []MiddlewareFunc
MiddlewareChain middleware function slice
type MiddlewareFunc ¶
MiddlewareFunc ... middleware function
type Request ¶
type Request struct { Version string `json:"jsonrpc"` Method string `json:"method"` Params *fastjson.RawMessage `json:"params"` ID *fastjson.RawMessage `json:"id"` }
A Request represents a JSON-RPC request received by the server.
type Response ¶
type Response struct { Version string `json:"jsonrpc"` Result interface{} `json:"result,omitempty"` Error *Error `json:"error,omitempty"` ID *fastjson.RawMessage `json:"id,omitempty"` }
A Response represents a JSON-RPC response returned by the server.
func NewResponse ¶
NewResponse generates a JSON-RPC response.