Documentation
¶
Index ¶
- Constants
- func EncodeMoneysocketMessage(msg MoneysocketMessage, toEncode map[string]interface{}) error
- type MessageBase
- func (m MessageBase) CryptLevel() string
- func (m MessageBase) IsValid() (bool, error)
- func (m MessageBase) MessageClass() MessageClass
- func (m MessageBase) MustBeClearText() bool
- func (m MessageBase) Protocol() string
- func (m MessageBase) ProtocolVersion() string
- func (m MessageBase) Timestamp() time.Time
- func (m MessageBase) ToJSON() ([]byte, error)
- type MessageClass
- type MessageType
- type MoneysocketMessage
Constants ¶
const ( // ProtocolName is the protocol name for money socket ProtocolName = "Moneysocket" // Version is the version of the protocol Version = "0.0.0" )
const ( // NotificationName is the name of a notification class NotificationName = "NOTIFICATION" // RequestName is the name of a request class RequestName = "REQUEST" )
const ( // PingRequest is a ping request PingRequest MessageType = 0 // ProviderRequest is a request for a provider ProviderRequest MessageType = iota // InvoiceRequest is a request for an invoice InvoiceRequest MessageType = iota // PayRequest is a request for payment PayRequest MessageType = iota // RendezvousRequest is a request for a provider RendezvousRequest MessageType = iota // RequestOpinionSeller requests items from an opinion seller RequestOpinionSeller MessageType = iota // RequestOpinionInvoice creates an invoice for an opinion RequestOpinionInvoice MessageType = iota // NotifyRendezvous notifies a rendezvous is ready NotifyRendezvous = iota // NotifyRendezvousEndNotification notifies a rendezvous has ended NotifyRendezvousEndNotification = iota // NotifyRendezvousNotReadyNotification notifies a rendezvous is not ready NotifyRendezvousNotReadyNotification = iota // NotifyInvoiceNotification notifies a new invoice has come in NotifyInvoiceNotification = iota // NotifyPreimage notifies a preimage has come in NotifyPreimage = iota // NotifyProvider notifies a provider is ready NotifyProvider = iota // NotifyOpinionSeller notifies an opinion seller is ready NotifyOpinionSeller = iota // NotifyOpinionSellerNotReady notifies an opinion seller is ready NotifyOpinionSellerNotReady = iota // NotifyProviderNotReady notifies a provider is not ready NotifyProviderNotReady = iota // NotifyOpinionInvoice notify an opinion invoice NotifyOpinionInvoice = iota // NotifyPing notifies a ping NotifyPing = iota // NotifyPong notifies a pong response NotifyPong = iota )
const ( // RequestPingName requests a ping message RequestPingName = "REQUEST_PING" // RequestProviderName requests a provider RequestProviderName = "REQUEST_PROVIDER" // RequestInvoiceName requests an invoice RequestInvoiceName = "REQUEST_INVOICE" // RequestPayName requests a payment RequestPayName = "REQUEST_PAY" // RendezvousRequestName requests a rendezvous RendezvousRequestName = "REQUEST_RENDEZVOUS" // RequestOpinionSellerName requests an opinion seller RequestOpinionSellerName = "REQUEST_OPINION_SELLER" // RequestOpinionInvoiceName requests an opinion invoice RequestOpinionInvoiceName = "REQUEST_OPINION_INVOICE" // NotifyNotifyRendezvousEndName notifies a rendezvous end NotifyNotifyRendezvousEndName = "NOTIFY_RENDEZVOUS_END" // NotifyInvoiceName notifies an invoice is ready NotifyInvoiceName = "NOTIFY_INVOICE" // NotifyPreimageName notifies a preimage NotifyPreimageName = "NOTIFY_PREIMAGE" // NotifyProviderName notifies a provider NotifyProviderName = "NOTIFY_PROVIDER" // NotifyOpinionSellerName notifies a seller is ready NotifyOpinionSellerName = "NOTIFY_OPINION_SELLER" // NotifyOpinionSellerNotReadyName notifies a seller is not ready NotifyOpinionSellerNotReadyName = "NOTIFY_OPINION_SELLER_NOT_READY" // NotifyOpinionInvoiceName notifies an invoice NotifyOpinionInvoiceName = "NOTIFY_OPINION_INVOICE" // NotifyProviderNotReadyName notifies a provider is not ready NotifyProviderNotReadyName = "NOTIFY_PROVIDER_NOT_READY" // NotifyPongName notifies a pong reply NotifyPongName = "NOTIFY_PONG" // NotifyRendezvousName notifies a rendezvous is ready NotifyRendezvousName = "NOTIFY_RENDEZVOUS" // NotifyRendezvousNotReadyName notifies a rendezvous is not readt NotifyRendezvousNotReadyName = "NOTIFY_RENDEZVOUS_NOT_READY" )
used for
const (
MessageClassKey = "message_class"
)
json keys
Variables ¶
This section is empty.
Functions ¶
func EncodeMoneysocketMessage ¶
func EncodeMoneysocketMessage(msg MoneysocketMessage, toEncode map[string]interface{}) error
EncodeMoneysocketMessage maps are passed by reference by default https://bit.ly/35KrDps
Types ¶
type MessageBase ¶ added in v0.54.0
type MessageBase struct {
// Time is the time
Time time.Time
// BaseProtocol is the base protocol name
BaseProtocol string
// BaseProtocolVersion is the protocol version
BaseProtocolVersion string
// BaseMessageClass is the message class
BaseMessageClass MessageClass
}
MessageBase is the message
func DecodeBaseBaseMoneysocketMessage ¶ added in v0.54.0
func DecodeBaseBaseMoneysocketMessage(payload []byte) (b MessageBase, err error)
DecodeBaseBaseMoneysocketMessage decodes a moneysocket message from json
func NewBaseBaseMoneysocketMessage ¶ added in v0.54.0
func NewBaseBaseMoneysocketMessage(messageType MessageClass) MessageBase
NewBaseBaseMoneysocketMessage creates a new MessageBase from a given MessageClass
func (MessageBase) CryptLevel ¶ added in v0.54.0
func (m MessageBase) CryptLevel() string
CryptLevel is the cryptography level of the message this can be override in the sub-class
func (MessageBase) IsValid ¶ added in v0.54.0
func (m MessageBase) IsValid() (bool, error)
IsValid determines wether or not a message is valid this is implemented in a sub-class
func (MessageBase) MessageClass ¶ added in v0.54.0
func (m MessageBase) MessageClass() MessageClass
MessageClass returns the MessageClass of the message
func (MessageBase) MustBeClearText ¶ added in v0.54.0
func (m MessageBase) MustBeClearText() bool
MustBeClearText determines whether or not a message can be unencrypted this can be overrided in the message class
func (MessageBase) Protocol ¶ added in v0.54.0
func (m MessageBase) Protocol() string
Protocol is the protocol of the message
func (MessageBase) ProtocolVersion ¶ added in v0.54.0
func (m MessageBase) ProtocolVersion() string
ProtocolVersion determines the version of MessageBase
func (MessageBase) Timestamp ¶ added in v0.54.0
func (m MessageBase) Timestamp() time.Time
Timestamp is the timestamp fo the message
func (MessageBase) ToJSON ¶ added in v0.54.0
func (m MessageBase) ToJSON() ([]byte, error)
ToJSON marshals the message to json
type MessageClass ¶
type MessageClass int
MessageClass is a type used to determine a message class
const ( // Notification is the MessageClass of the Notification Notification MessageClass = 0 // Request is the MessageClass of the Request Request MessageClass = iota )
func MessageClassFromString ¶
func MessageClassFromString(class string) MessageClass
MessageClassFromString determines the MessageClass from a given string
func (MessageClass) ToString ¶
func (m MessageClass) ToString() string
ToString converts a message class to the string (either NotificationName or RequestName)
type MessageType ¶
type MessageType int
MessageType is the message or notification type
func MessageTypeFromString ¶
func MessageTypeFromString(name string) MessageType
MessageTypeFromString converts a name to a MessageType
func (MessageType) ToString ¶
func (r MessageType) ToString() string
ToString converts a message to a string
type MoneysocketMessage ¶
type MoneysocketMessage interface {
// get timestamp message was created
Timestamp() time.Time
// get protocol
Protocol() string
// get protocol version
ProtocolVersion() string
// get message class (request or message)
MessageClass() MessageClass
// convert a message to json
ToJSON() ([]byte, error)
// wetrher or not the message is valid
IsValid() (bool, error)
// wether or not a message must be clear text
MustBeClearText() bool
// encryption level
CryptLevel() string
}
MoneysocketMessage is probably one of the worst ways to handle json in go but I wanted to make sure the first vresion was as close to moneysocket as possible architecturally so I could safely refactor with test cases in place