bot

package module
v1.2.2-0...-4dda4ac Latest Latest
Warning

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

Go to latest
Published: Jan 29, 2021 License: Apache-2.0 Imports: 35 Imported by: 0

README

bot-api-go-client

Installation

Install using the "go get" command:

go get github.com/usmbest/bot-api-go-client

Documentation

Index

Constants

View Source
const (
	MessageCategoryPlainText             = "PLAIN_TEXT"
	MessageCategoryPlainImage            = "PLAIN_IMAGE"
	MessageCategoryPlainData             = "PLAIN_DATA"
	MessageCategoryPlainSticker          = "PLAIN_STICKER"
	MessageCategoryPlainLive             = "PLAIN_LIVE"
	MessageCategoryPlainContact          = "PLAIN_CONTACT"
	MessageCategoryPlainPost             = "PLAIN_POST"
	MessageCategorySystemConversation    = "SYSTEM_CONVERSATION"
	MessageCategorySystemAccountSnapshot = "SYSTEM_ACCOUNT_SNAPSHOT"
	MessageCategoryMessageRecall         = "MESSAGE_RECALL"
	MessageCategoryAppButtonGroup        = "APP_BUTTON_GROUP"
	MessageCategoryAppCard               = "APP_CARD"
)
View Source
const (
	RelationshipActionAdd     = "ADD"
	RelationshipActionUpdate  = "UPDATE"
	RelationshipActionRemove  = "REMOVE"
	RelationshipActionBlock   = "BLOCK"
	RelationshipActionUnblock = "UNBLOCK"
)

Variables

View Source
var (
	ErrEdDSAVerification = errors.New("crypto/eddsa: verification error")
)
View Source
var Nil = uuid.Nil

Functions

func CancelMultisig

func CancelMultisig(ctx context.Context, id string, uid, sid, sessionKey string) error

func Chunked

func Chunked(source []interface{}, size int) [][]interface{}

func CreateRaw

func CreateRaw(ctx context.Context)

func DeleteAddress

func DeleteAddress(ctx context.Context, addressId, uid, sid, sessionKey, pin, pinToken string) error

func EncryptEd25519PIN

func EncryptEd25519PIN(ctx context.Context, pin, pinTokenBase64, sessionId, privateKey string, iterator uint64) (string, error)

func EncryptPIN

func EncryptPIN(ctx context.Context, pin, pinToken, sessionId, privateKey string, iterator uint64) (string, error)

func OAuthGetAccessToken

func OAuthGetAccessToken(ctx context.Context, clientID, clientSecret string, authorizationCode string, codeVerifier string, ed25519 string) (string, string, string, error)

OAuthGetAccessToken get the access token of a user ed25519 is optional, only use it when you want to sign OAuth access token locally

func PostAcknowledgements

func PostAcknowledgements(ctx context.Context, requests []*ReceiptAcknowledgementRequest, clientId, sessionId, secret string) error

func PostMessage

func PostMessage(ctx context.Context, conversationId, recipientId, messageId, category, data string, clientId, sessionId, secret string) error

func PostMessages

func PostMessages(ctx context.Context, messages []*MessageRequest, clientId, sessionId, secret string) error

func PrivateKeyToCurve25519

func PrivateKeyToCurve25519(curve25519Private *[32]byte, privateKey ed25519.PrivateKey)

func PublicKeyToCurve25519

func PublicKeyToCurve25519(publicKey ed25519.PublicKey) ([]byte, error)

func Request

func Request(ctx context.Context, method, path string, body []byte, accessToken string) ([]byte, error)

func RequestWithId

func RequestWithId(ctx context.Context, method, path string, body []byte, accessToken, requestID string) ([]byte, error)

func SetBaseUri

func SetBaseUri(base string)

func SetBlazeUri

func SetBlazeUri(blaze string)

func SignAuthenticationToken

func SignAuthenticationToken(uid, sid, privateKey, method, uri, body string) (string, error)

func SignAuthenticationTokenWithoutBody

func SignAuthenticationTokenWithoutBody(uid, sid, privateKey, method, uri string) (string, error)

func SignOauthAccessToken

func SignOauthAccessToken(appID, authorizationID, privateKey, method, uri, body, scp string, requestID string) (string, error)

func UniqueConversationId

func UniqueConversationId(userId, recipientId string) string

func UnlockMultisig

func UnlockMultisig(ctx context.Context, id, pin string, uid, sid, sessionKey string) error

func UpdatePin

func UpdatePin(ctx context.Context, oldEncryptedPin, encryptedPin, uid, sid, sessionKey string) error

func UuidFromBytes

func UuidFromBytes(input []byte) (uuid.UUID, error)

func UuidFromString

func UuidFromString(id string) (uuid.UUID, error)

func UuidNewV4

func UuidNewV4() uuid.UUID

Types

type Address

type Address struct {
	AddressId   string `json:"address_id"`
	AssetId     string `json:"asset_id"`
	Label       string `json:"label"`
	Destination string `json:"destination"`
	Tag         string `json:"tag"`
	Fee         string `json:"fee"`
	Reserve     string `json:"reserve"`
	UpdatedAt   string `json:"updated_at"`
}

func CreateAddress

func CreateAddress(ctx context.Context, in *AddressInput, uid, sid, sessionKey, pin, pinToken string) (*Address, error)

func GetAddressesByAssetId

func GetAddressesByAssetId(ctx context.Context, assetId, uid, sid, sessionKey string) ([]*Address, error)

func ReadAddress

func ReadAddress(ctx context.Context, addressId, uid, sid, sessionKey string) (*Address, error)

type AddressInput

type AddressInput struct {
	AssetId     string
	Label       string
	Destination string
	Tag         string
}

type Asset

type Asset struct {
	AssetId        string         `json:"asset_id"`
	ChainId        string         `json:"chain_id"`
	Symbol         string         `json:"symbol"`
	Name           string         `json:"name"`
	IconURL        string         `json:"icon_url"`
	PriceBTC       string         `json:"price_btc"`
	PriceUSD       string         `json:"price_usd"`
	Balance        string         `json:"balance"`
	Destination    string         `json:"destination"`
	Tag            string         `json:"tag"`
	Confirmations  int            `json:"confirmations"`
	DepositEntries []DepositEntry `json:"deposit_entries"`
}

func AssetList

func AssetList(ctx context.Context, accessToken string) ([]*Asset, error)

func AssetSearch

func AssetSearch(ctx context.Context, name string) ([]*Asset, error)

func AssetShow

func AssetShow(ctx context.Context, assetId string, accessToken string) (*Asset, error)

type Attachment

type Attachment struct {
	Type         string `json:"type"`
	AttachmentId string `json:"attachment_id"`
	ViewURL      string `json:"view_url"`
	UploadUrl    string `json:"upload_url"`
}

func AttachmentShow

func AttachmentShow(ctx context.Context, uid, sid, key, id string) (*Attachment, error)

func CreateAttachment

func CreateAttachment(ctx context.Context, uid, sid, key string) (*Attachment, error)

type BlazeClient

type BlazeClient struct {
	// contains filtered or unexported fields
}

func NewBlazeClient

func NewBlazeClient(uid, sid, key string) *BlazeClient

func (*BlazeClient) Loop

func (b *BlazeClient) Loop(ctx context.Context, listener BlazeListener) error

func (*BlazeClient) SendAppButton

func (b *BlazeClient) SendAppButton(ctx context.Context, conversationId, recipientId, label, action, color string) error

func (*BlazeClient) SendAppCard

func (b *BlazeClient) SendAppCard(ctx context.Context, conversationId, recipientId, title, description, action, iconUrl string) error

func (*BlazeClient) SendContact

func (b *BlazeClient) SendContact(ctx context.Context, conversationId, recipientId, contactId string) error

func (*BlazeClient) SendMessage

func (b *BlazeClient) SendMessage(ctx context.Context, conversationId, recipientId, messageId, category, content, representativeId string) error

func (*BlazeClient) SendPlainText

func (b *BlazeClient) SendPlainText(ctx context.Context, msg MessageView, content string) error

func (*BlazeClient) SendPost

func (b *BlazeClient) SendPost(ctx context.Context, msg MessageView, content string) error

type BlazeListener

type BlazeListener interface {
	OnMessage(ctx context.Context, msg MessageView, userId string) error
}

type BlazeMessage

type BlazeMessage struct {
	Id     string                 `json:"id"`
	Action string                 `json:"action"`
	Params map[string]interface{} `json:"params,omitempty"`
	Data   json.RawMessage        `json:"data,omitempty"`
	Error  *Error                 `json:"error,omitempty"`
}

type Conversation

type Conversation struct {
	ConversationId string    `json:"conversation_id"`
	CreatorId      string    `json:"creator_id"`
	Category       string    `json:"category"`
	Name           string    `json:"name"`
	IconURL        string    `json:"icon_url"`
	Announcement   string    `json:"announcement"`
	CreatedAt      time.Time `json:"created_at"`

	Participants        []Participant            `json:"participants"`
	ParticipantSessions []ParticipantSessionView `json:"participant_sessions"`
}

func ConversationShow

func ConversationShow(ctx context.Context, conversationId string, accessToken string) (*Conversation, error)

func CreateConversation

func CreateConversation(ctx context.Context, category, conversationId string, name, announcement string, participants []Participant, uid, sid, key string) (*Conversation, error)

type DepositEntry

type DepositEntry struct {
	Destination string `json:"destination"`
	Tag         string `json:"tag"`
}

type EdDSASigningMethod

type EdDSASigningMethod struct{}
var Ed25519SigningMethod *EdDSASigningMethod

func (*EdDSASigningMethod) Alg

func (sm *EdDSASigningMethod) Alg() string

func (*EdDSASigningMethod) Sign

func (sm *EdDSASigningMethod) Sign(signingString string, key interface{}) (string, error)

func (*EdDSASigningMethod) Verify

func (sm *EdDSASigningMethod) Verify(signingString, signature string, key interface{}) error

type Error

type Error struct {
	Status      int         `json:"status"`
	Code        int         `json:"code"`
	Description string      `json:"description"`
	Extra       interface{} `json:"extra,omitempty"`
	// contains filtered or unexported fields
}

func AuthorizationError

func AuthorizationError(ctx context.Context) Error

func BadDataError

func BadDataError(ctx context.Context) Error

func BlazeServerError

func BlazeServerError(ctx context.Context, err error) Error

func ForbiddenError

func ForbiddenError(ctx context.Context) Error

func ServerError

func ServerError(ctx context.Context, err error) Error

func (Error) Error

func (sessionError Error) Error() string

type Fiat

type Fiat struct {
	Code string  `json:"code"`
	Rate float64 `json:"rate"`
}

func Fiats

func Fiats(ctx context.Context, uid, sid, sessionKey string) ([]*Fiat, error)

type GhostKeyRequest

type GhostKeyRequest struct {
	Receivers []string `json:"receivers"`
	Index     int      `json:"index"`
	Hint      string   `json:"hint"`
}

type GhostKeys

type GhostKeys struct {
	Type string   `json:"type"`
	Mask string   `json:"mask"`
	Keys []string `json:"keys"`
}

func ReadGhostKey

func ReadGhostKey(ctx context.Context, receivers []string, index int, hint string, uid, sid, sessionKey string) (*GhostKeys, error)

func ReadGhostKeys

func ReadGhostKeys(ctx context.Context, gkr []GhostKeyRequest, uid, sid, sessionKey string) ([]*GhostKeys, error)

type LiveMessagePayload

type LiveMessagePayload struct {
	Width    int    `json:"width"`
	Height   int    `json:"height"`
	ThumbUrl string `json:"thumb_url"`
	Url      string `json:"url"`
}

type MessageRequest

type MessageRequest struct {
	ConversationId   string `json:"conversation_id"`
	RecipientId      string `json:"recipient_id"`
	MessageId        string `json:"message_id"`
	Category         string `json:"category"`
	Data             string `json:"data"`
	RepresentativeId string `json:"representative_id"`
	QuoteMessageId   string `json:"quote_message_id"`
}

type MessageView

type MessageView struct {
	ConversationId   string    `json:"conversation_id"`
	UserId           string    `json:"user_id"`
	MessageId        string    `json:"message_id"`
	Category         string    `json:"category"`
	Data             string    `json:"data"`
	RepresentativeId string    `json:"representative_id"`
	QuoteMessageId   string    `json:"quote_message_id"`
	Status           string    `json:"status"`
	Source           string    `json:"source"`
	CreatedAt        time.Time `json:"created_at"`
	UpdatedAt        time.Time `json:"updated_at"`
}

type MultisigRequest

type MultisigRequest struct {
	Type            string    `json:"type"`
	RequestId       string    `json:"request_id"`
	UserId          string    `json:"user_id"`
	AssetId         string    `json:"asset_id"`
	Amount          string    `json:"amount"`
	Threshold       int64     `json:"threshold"`
	Senders         []string  `json:"senders"`
	Receivers       []string  `json:"receivers"`
	Signers         []string  `json:"signers"`
	Memo            string    `json:"memo"`
	Action          string    `json:"action"`
	State           string    `json:"state"`
	TransactionHash string    `json:"transaction_hash"`
	RawTransaction  string    `json:"raw_transaction"`
	CreatedAt       time.Time `json:"created_at"`
	CodeId          string    `json:"code_id"`
}

func CreateMultisig

func CreateMultisig(ctx context.Context, action, raw string, uid, sid, sessionKey string) (*MultisigRequest, error)

CreateMultisig create a multisigs request which action is `unlock` or `sign`

func SignMultisig

func SignMultisig(ctx context.Context, id, pin string, uid, sid, sessionKey string) (*MultisigRequest, error)

type MultisigUTXO

type MultisigUTXO struct {
	Type            string    `json:"type"`
	UserId          string    `json:"user_id"`
	UTXOId          string    `json:"utxo_id"`
	AssetId         string    `json:"asset_id"`
	TransactionHash string    `json:"transaction_hash"`
	OutputIndex     int64     `json:"output_index"`
	Amount          string    `json:"amount"`
	Threshold       int64     `json:"threshold"`
	Members         []string  `json:"members"`
	Memo            string    `json:"memo"`
	State           string    `json:"state"`
	CreatedAt       time.Time `json:"created_at"`
	SignedBy        string    `json:"signed_by"`
	SignedTx        string    `json:"signed_tx"`
}

func ReadMultisigs

func ReadMultisigs(ctx context.Context, limit int, offset, state, uid, sid, sessionKey string) ([]*MultisigUTXO, error)

state: spent, unspent, signed

func ReadMultisigsLegacy

func ReadMultisigsLegacy(ctx context.Context, limit int, offset, uid, sid, sessionKey string) ([]*MultisigUTXO, error)

type Participant

type Participant struct {
	UserId    string    `json:"user_id"`
	Role      string    `json:"role"`
	CreatedAt time.Time `json:"created_at"`
}

type ParticipantSessionView

type ParticipantSessionView struct {
	Type      string `json:"type"`
	UserId    string `json:"user_id"`
	SessionId string `json:"session_id"`
	PublicKey string `json:"public_key"`
}

type Payment

type Payment struct {
	Type      string    `json:"type"`
	TraceId   string    `json:"trace_id"`
	AssetId   string    `json:"asset_id"`
	Amount    string    `json:"amount"`
	Threshold int64     `json:"threshold"`
	Receivers []string  `json:"receivers"`
	Memo      string    `json:"memo"`
	Status    string    `json:"status"`
	CodeId    string    `json:"code_id"`
	CreatedAt time.Time `json:"created_at"`
}

func CreatePaymentRequest

func CreatePaymentRequest(ctx context.Context, payment *PaymentRequest, uid, sid, sessionKey string) (*Payment, error)

func ReadPaymentByCode

func ReadPaymentByCode(ctx context.Context, codeId string) (*Payment, error)

type PaymentRequest

type PaymentRequest struct {
	AssetId          string `json:"asset_id"`
	Amount           string `json:"amount"`
	TraceId          string `json:"trace_id"`
	Memo             string `json:"memo"`
	OpponentMultisig struct {
		Receivers []string `json:"receivers"`
		Threshold int64    `json:"threshold"`
	} `json:"opponent_multisig"`
}

type RawTransaction

type RawTransaction struct {
	Type            string    `json:"type"`
	SnapshotId      string    `json:"snapshot_id"`
	OpponentKey     string    `json:"opponent_key"`
	AssetId         string    `json:"asset_id"`
	Amount          string    `json:"amount"`
	TraceId         string    `json:"trace_id"`
	Memo            string    `json:"memo"`
	State           string    `json:"state"`
	CreatedAt       time.Time `json:"created_at"`
	TransactionHash string    `json:"transaction_hash"`
	SnapshotHash    string    `json:"snapshot_hash"`
	SnapshotAt      time.Time `json:"snapshot_at"`
}

func CreateMultisigTransaction

func CreateMultisigTransaction(ctx context.Context, in *TransferInput, uid, sid, sessionKey, pin, pinToken string) (*RawTransaction, error)

func CreateTransaction

func CreateTransaction(ctx context.Context, in *TransferInput, uid, sid, sessionKey, pin, pinToken string) (*RawTransaction, error)

type RecallMessagePayload

type RecallMessagePayload struct {
	MessageId string `json:"message_id"`
}

type ReceiptAcknowledgementRequest

type ReceiptAcknowledgementRequest struct {
	MessageId string `json:"message_id"`
	Status    string `json:"status"`
}

type Snapshot

type Snapshot struct {
	Type           string    `json:"type"`
	SnapshotId     string    `json:"snapshot_id"`
	AssetId        string    `json:"asset_id"`
	Amount         string    `json:"amount"`
	OpeningBalance string    `json:"opening_balance"`
	ClosingBalance string    `json:"closing_balance"`
	CreatedAt      time.Time `json:"created_at"`
	// deposit &  withdrawal
	TransactionHash string `json:"transaction_hash,omitempty"`
	OutputIndex     int64  `json:"output_index,omitempty"`
	Sender          string `json:"sender,omitempty"`
	Receiver        string `json:"receiver,omitempty"`
	// transfer
	SnapshotHash  string    `json:"snapshot_hash,omitempty"`
	SnapshotAt    time.Time `json:"snapshot_at,omitempty"`
	OpponentId    string    `json:"opponent_id,omitempty"`
	TraceId       string    `json:"trace_id,omitempty"`
	Memo          string    `json:"memo,omitempty"`
	Confirmations int64     `json:"confirmations,omitempty"`
	State         string    `json:"state,omitempty"`
	Fee           struct {
		Amount  string `json:"amount"`
		AssetId string `json:"asset_id"`
	} `json:"fee,omitempty"`
}

func CreateTransfer

func CreateTransfer(ctx context.Context, in *TransferInput, uid, sid, sessionKey, pin, pinToken string) (*Snapshot, error)

func CreateWithdrawal

func CreateWithdrawal(ctx context.Context, in *WithdrawalInput, uid, sid, sessionKey, pin, pinToken string) (*Snapshot, error)

func NetworkSnapshot

func NetworkSnapshot(ctx context.Context, snapshotId string) (*Snapshot, error)

func NetworkSnapshotByToken

func NetworkSnapshotByToken(ctx context.Context, snapshotId, accessToken string) (*Snapshot, error)

func ReadTransferByTrace

func ReadTransferByTrace(ctx context.Context, traceId, uid, sid, sessionKey string) (*Snapshot, error)

func SnapshotById

func SnapshotById(ctx context.Context, snapshotId string, uid, sid, sessionKey string) (*Snapshot, error)

func SnapshotByToken

func SnapshotByToken(ctx context.Context, snapshotId string, accessToken string) (*Snapshot, error)

func Snapshots

func Snapshots(ctx context.Context, limit int, offset, assetId, order, uid, sid, sessionKey string) ([]*Snapshot, error)

func SnapshotsByToken

func SnapshotsByToken(ctx context.Context, limit int, offset, assetId, order, accessToken string) ([]*Snapshot, error)

type SnapshotShort

type SnapshotShort struct {
	Type       string `json:"type"`
	SnapshotId string `json:"snapshot_id"`
	Source     string `json:"source"`
	Amount     string `json:"amount"`
	Asset      struct {
		Type     string `json:"type"`
		AssetId  string `json:"asset_id"`
		ChainId  string `json:"chain_id"`
		MixinId  string `json:"mixin_id"`
		Symbol   string `json:"symbol"`
		Name     string `json:"name"`
		AssetKey string `json:"asset_key"`
		IconUrl  string `json:"icon_url"`
	} `json:"asset"`
	CreatedAt  time.Time `json:"created_at"`
	TraceId    string    `json:"trace_id"`
	OpponentId string    `json:"opponent_id"`
	Memo       string    `json:"data"`
}

func NetworkSnapshots

func NetworkSnapshots(ctx context.Context, limit int, offset, assetId, order string) ([]*SnapshotShort, error)

func NetworkSnapshotsByToken

func NetworkSnapshotsByToken(ctx context.Context, limit int, offset, assetId, order, accessToken string) ([]*SnapshotShort, error)

type Transaction

type Transaction struct {
	Type            string `json:"type"`
	TransactionId   string `json:"transaction_id"`
	TransactionHash string `json:"transaction_hash"`
	Sender          string `json:"sender"`
	ChainId         string `json:"chain_id"`
	AssetId         string `json:"asset_id"`
	Amount          string `json:"amount"`
	Destination     string `json:"destination"`
	Tag             string `json:"tag"`
	Confirmations   int    `json:"confirmations"`
	Threshold       int    `json:"threshold"`
	CreatedAt       string `json:"created_at"`
}

func ExternalTranactions

func ExternalTranactions(ctx context.Context, asset, destination, tag string) ([]*Transaction, error)

type TransferInput

type TransferInput struct {
	AssetId          string
	RecipientId      string
	Amount           number.Decimal
	TraceId          string
	Memo             string
	OpponentKey      string
	OpponentMultisig struct {
		Receivers []string
		Threshold int64
	}
}

type TransferView

type TransferView struct {
	Type          string    `json:"type"`
	SnapshotId    string    `json:"snapshot_id"`
	CounterUserId string    `json:"counter_user_id"`
	AssetId       string    `json:"asset_id"`
	Amount        string    `json:"amount"`
	TraceId       string    `json:"trace_id"`
	Memo          string    `json:"memo"`
	CreatedAt     time.Time `json:"created_at"`
}

type Turn

type Turn struct {
	Url        string `json:"url"`
	Username   string `json:"username"`
	Credential string `json:"credential"`
}

func GetTurnServer

func GetTurnServer(ctx context.Context, uid, sid, sessionKey string) ([]*Turn, error)

type User

type User struct {
	UserId         string `json:"user_id"`
	SessionId      string `json:"session_id"`
	PinToken       string `json:"pin_token"`
	PINTokenBase64 string `json:"pin_token_base64"`
	IdentityNumber string `json:"identity_number"`
	Phone          string `json:"phone"`
	FullName       string `json:"full_name"`
	AvatarURL      string `json:"avatar_url"`
	DeviceStatus   string `json:"device_status"`
	CreatedAt      string `json:"created_at"`
}

func CreateUser

func CreateUser(ctx context.Context, sessionSecret, fullName, uid, sid, sessionKey string) (*User, error)

func GetUser

func GetUser(ctx context.Context, userId, uid, sid, sessionKey string) (*User, error)

func Relationship

func Relationship(ctx context.Context, uid, sid, privateKey string, userId, action string) (*User, error)

func SearchUser

func SearchUser(ctx context.Context, mixinId, uid, sid, sessionKey string) (*User, error)

func UpdatePreference

func UpdatePreference(ctx context.Context, uid, sid, privateKey string, messageSource, conversationSource, currency string, threshold float64) (*User, error)

func UpdateUserMe

func UpdateUserMe(ctx context.Context, uid, sid, privateKey, fullName, avatarBase64 string) (*User, error)

func UserMe

func UserMe(ctx context.Context, accessToken string) (*User, error)

func VerifyPIN

func VerifyPIN(ctx context.Context, uid, pin, pinToken, sessionId, privateKey string) (*User, error)

type WithdrawalInput

type WithdrawalInput struct {
	AddressId string
	Amount    number.Decimal
	TraceId   string
	Memo      string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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