12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package jsonrpc2
- import (
- "encoding/json"
- "fmt"
- )
- var (
- errServerError = NewError(-1, "Error: json.Marshal failed")
- )
- // Error represent JSON-RPC 2.0 "Error object".
- type Error struct {
- Code int `json:"code"`
- Message string `json:"message"`
- }
- // NewError returns an Error with given code and message.
- func NewError(code int, message string) *Error {
- return &Error{Code: code, Message: message}
- }
- // NewError returns an Error with given code and message.
- func NewJsonError(code int, message string) error {
- e := &Error{Code: code, Message: message}
- buf, err := json.Marshal(e)
- if err != nil {
- msg, err := json.Marshal(err.Error())
- if err != nil {
- msg = []byte(`"` + errServerError.Message + `"`)
- }
- return fmt.Errorf(`{"code":%d,"message":%s}`, errServerError.Code, string(msg))
- }
- return fmt.Errorf(string(buf))
- }
- // Error returns JSON representation of Error.
- func (e *Error) Error() string {
- buf, err := json.Marshal(e)
- if err != nil {
- msg, err := json.Marshal(err.Error())
- if err != nil {
- msg = []byte(`"` + errServerError.Message + `"`)
- }
- return fmt.Sprintf(`{"code":%d,"message":%s}`, errServerError.Code, string(msg))
- }
- return string(buf)
- }
|