package jsonrpc
// Error defines a JSON RPC error that can be returned
// in a Response from the spec
// http://www.jsonrpc.org/specification#error_object
type Error struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
}
// Error implements error.
func (e Error) Error() string {
if e.Message != "" {
return e.Message
}
return errorMessage[e.Code]
}
// ErrorCode returns the JSON RPC error code associated with the error.
func (e Error) ErrorCode() int {
return e.Code
}
const (
// ParseError defines invalid JSON was received by the server.
// An error occurred on the server while parsing the JSON text.
ParseError int = -32700
// InvalidRequestError defines the JSON sent is not a valid Request object.
InvalidRequestError int = -32600
// MethodNotFoundError defines the method does not exist / is not available.
MethodNotFoundError int = -32601
// InvalidParamsError defines invalid method parameter(s).
InvalidParamsError int = -32602
// InternalError defines a server error
InternalError int = -32603
)
var errorMessage = map[int]string{
ParseError: "An error occurred on the server while parsing the JSON text.",
InvalidRequestError: "The JSON sent is not a valid Request object.",
MethodNotFoundError: "The method does not exist / is not available.",
InvalidParamsError: "Invalid method parameter(s).",
InternalError: "Internal JSON-RPC error.",
}
// ErrorMessage returns a message for the JSON RPC error code. It returns the empty
// string if the code is unknown.
func ErrorMessage(code int) string {
return errorMessage[code]
}
type parseError string
func (e parseError) Error() string {
return string(e)
}
func (e parseError) ErrorCode() int {
return ParseError
}
type invalidRequestError string
func (e invalidRequestError) Error() string {
return string(e)
}
func (e invalidRequestError) ErrorCode() int {
return InvalidRequestError
}
type methodNotFoundError string
func (e methodNotFoundError) Error() string {
return string(e)
}
func (e methodNotFoundError) ErrorCode() int {
return MethodNotFoundError
}
type invalidParamsError string
func (e invalidParamsError) Error() string {
return string(e)
}
func (e invalidParamsError) ErrorCode() int {
return InvalidParamsError
}
type internalError string
func (e internalError) Error() string {
return string(e)
}
func (e internalError) ErrorCode() int {
return InternalError
}