48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
|
package slobs
|
||
|
|
||
|
import "encoding/json"
|
||
|
|
||
|
type RPCRequest struct {
|
||
|
Method string `json:"method"`
|
||
|
Params interface{} `json:"params,omitempty"`
|
||
|
ID int `json:"id"`
|
||
|
JSONRPC string `json:"jsonrpc"`
|
||
|
}
|
||
|
|
||
|
// RPCResponse represents a JSON-RPC response object.
|
||
|
//
|
||
|
// Result: holds the result of the rpc call if no error occurred, nil otherwise. can be nil even on success.
|
||
|
//
|
||
|
// Error: holds an RPCError object if an error occurred. must be nil on success.
|
||
|
//
|
||
|
// ID: may always be 0 for single requests. is unique for each request in a batch call (see CallBatch())
|
||
|
//
|
||
|
// JSONRPC: must always be set to "2.0" for JSON-RPC version 2.0
|
||
|
//
|
||
|
// See: http://www.jsonrpc.org/specification#response_object
|
||
|
type RPCResponse struct {
|
||
|
JSONRPC string `json:"jsonrpc"`
|
||
|
Result *json.RawMessage `json:"result,omitempty"`
|
||
|
Error *RPCError `json:"error,omitempty"`
|
||
|
ID *int `json:"id"`
|
||
|
}
|
||
|
|
||
|
func (r *RPCResponse) DecodeTo(v interface{}) error {
|
||
|
return json.Unmarshal(*r.Result, &v)
|
||
|
}
|
||
|
|
||
|
// RPCError represents a JSON-RPC error object if an RPC error occurred.
|
||
|
//
|
||
|
// Code: holds the error code
|
||
|
//
|
||
|
// Message: holds a short error message
|
||
|
//
|
||
|
// Data: holds additional error data, may be nil
|
||
|
//
|
||
|
// See: http://www.jsonrpc.org/specification#error_object
|
||
|
type RPCError struct {
|
||
|
Code int `json:"code"`
|
||
|
Message string `json:"message"`
|
||
|
Data interface{} `json:"data,omitempty"`
|
||
|
}
|