Help us shape the future of Go! Take the 2026 Go Developer Survey

api

package
v2.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2023 License: MIT Imports: 6 Imported by: 3

Documentation

Index

Constants

View Source
const (
	MessageSignatureLen           = 65
	MessageSignatureHexEncodedLen = 2 + 2*MessageSignatureLen
	MessageIdMaxLen               = 128
	MessageMethodMaxLen           = 64
	MessageDonIdMaxLen            = 64
	MessageSenderLen              = 20
	MessageSenderHexEncodedLen    = 2 + 2*MessageSenderLen
)

Variables

This section is empty.

Functions

func ToHttpErrorCode

func ToHttpErrorCode(errorCode ErrorCode) int

See https://go.dev/src/net/http/status.go

Types

type Codec

type Codec interface {
	DecodeRequest(msgBytes []byte) (*Message, error)

	EncodeRequest(msg *Message) ([]byte, error)

	DecodeResponse(msgBytes []byte) (*Message, error)

	EncodeResponse(msg *Message) ([]byte, error)

	EncodeNewErrorResponse(id string, code int, message string, data []byte) ([]byte, error)
}

Codec implements (de)serialization of Message objects.

type ErrorCode

type ErrorCode int
const (
	NoError ErrorCode = iota
	UserMessageParseError
	UnsupportedDONIdError
	InternalHandlerError
	RequestTimeoutError
	NodeReponseEncodingError
	FatalError
)

type JsonRPCCodec

type JsonRPCCodec struct {
}

func (*JsonRPCCodec) DecodeRequest

func (*JsonRPCCodec) DecodeRequest(msgBytes []byte) (*Message, error)

func (*JsonRPCCodec) DecodeResponse

func (*JsonRPCCodec) DecodeResponse(msgBytes []byte) (*Message, error)

func (*JsonRPCCodec) EncodeNewErrorResponse

func (*JsonRPCCodec) EncodeNewErrorResponse(id string, code int, message string, data []byte) ([]byte, error)

func (*JsonRPCCodec) EncodeRequest

func (*JsonRPCCodec) EncodeRequest(msg *Message) ([]byte, error)

func (*JsonRPCCodec) EncodeResponse

func (*JsonRPCCodec) EncodeResponse(msg *Message) ([]byte, error)

type JsonRPCError

type JsonRPCError struct {
	Code    int             `json:"code"`
	Message string          `json:"message"`
	Data    json.RawMessage `json:"data,omitempty"`
}

JSON-RPC error can only be sent to users. It is not used for messages between Gateways and Nodes.

type JsonRPCRequest

type JsonRPCRequest struct {
	Version string   `json:"jsonrpc"`
	Id      string   `json:"id"`
	Method  string   `json:"method"`
	Params  *Message `json:"params,omitempty"`
}

Wrapping/unwrapping Message objects into JSON RPC ones folllowing https://www.jsonrpc.org/specification

type JsonRPCResponse

type JsonRPCResponse struct {
	Version string        `json:"jsonrpc"`
	Id      string        `json:"id"`
	Result  *Message      `json:"result,omitempty"`
	Error   *JsonRPCError `json:"error,omitempty"`
}

type Message

type Message struct {
	Signature string      `json:"signature"`
	Body      MessageBody `json:"body"`
}

* Top-level Message structure containing: * - universal fields identifying the request, the sender and the target DON/service * - product-specific payload * * Signature and Sender are hex-encoded with a "0x" prefix.

func (*Message) Sign

func (m *Message) Sign(privateKey *ecdsa.PrivateKey) error

Message signatures are over the following data:

  1. MessageId aligned to 128 bytes
  2. Method aligned to 64 bytes
  3. DonId aligned to 64 bytes
  4. Payload (before parsing)

func (*Message) Validate

func (m *Message) Validate() error

func (*Message) ValidateSignature

func (m *Message) ValidateSignature() (signerAddress []byte, err error)

type MessageBody

type MessageBody struct {
	MessageId string `json:"message_id"`
	Method    string `json:"method"`
	DonId     string `json:"don_id"`
	Sender    string `json:"sender"`

	// Service-specific payload, decoded inside the Handler.
	Payload json.RawMessage `json:"payload,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL