Back to godoc.org
boscoin.io/sebak / lib / client

Package client

v0.0.0-...-8aa4d74
Latest Go to latest

The latest major version is .

Published: Feb 13, 2019 | License: GPL3 | Module: boscoin.io/sebak

Index

Constants

const (
	UrlPrefixForAPIV1 = "/api/v1"

	UrlAccountTransactions   = "/accounts/{id}/transactions"
	UrlAccount               = "/accounts/{id}"
	UrlAccountOperations     = "/accounts/{id}/operations"
	UrlAccountFrozenAccounts = "/accounts/{id}/frozen-accounts"
	UrlFrozenAccounts        = "/frozen-accounts"
	UrlTransactions          = "/transactions"
	UrlTransactionByHash     = "/transactions/{id}"
	UrlTransactionStatus     = "/transactions/{id}/status"
	UrlTransactionOperations = "/transactions/{id}/operations"
	UrlSubscribe             = "/subscribe"
)

func NewDefaultListOptionsFromQuery

func NewDefaultListOptionsFromQuery(v neturl.Values) (options *storage.DefaultListOptions, err error)

NewDefaultListOptionsFromQuery makes ListOptions from url.Query.

type Account

type Account struct {
	Links struct {
		Self         Link `json:"self"`
		Transactions Link `json:"transactions"`
		Operations   Link `json:"operations"`
	} `json:"_links"`

	Address    string `json:"address"`
	SequenceID uint64 `json:"sequence_id"`
	Balance    string `json:"balance"`
	Linked     string `json:"linked"`
}

type Client

type Client struct {
	URL string

	HTTP *common.HTTP2Client
}

func MustNewClient

func MustNewClient(url string) *Client

Calls `NewClient` and panic if an `error` is returned

func NewClient

func NewClient(url string) (*Client, error)

Create a new Client object

Params:

url = The url of the node, e.g. "https://127.0.0.1:1234"

Returns:

error   = An error object, if the client could not be created.
          `nil` otherwise.
Client* = If `error == nil`, the constructed `Client`

func (*Client) Get

func (c *Client) Get(path string, headers http.Header) (response *http.Response, err error)

func (*Client) LoadAFrozenAccounts

func (c *Client) LoadAFrozenAccounts(id string, queries ...Q) (fPage FrozenAccountsPage, err error)

func (*Client) LoadAccount

func (c *Client) LoadAccount(id string, queries ...Q) (account Account, err error)

func (*Client) LoadFrozenAccountsByLinked

func (c *Client) LoadFrozenAccountsByLinked(id string, queries ...Q) (fPage FrozenAccountsPage, err error)

func (*Client) LoadOperationsByAccount

func (c *Client) LoadOperationsByAccount(id string, queries ...Q) (oPage OperationsPage, err error)

func (*Client) LoadOperationsByTransaction

func (c *Client) LoadOperationsByTransaction(id string, queries ...Q) (oPage OperationsPage, err error)

func (*Client) LoadTransaction

func (c *Client) LoadTransaction(id string, queries ...Q) (transaction Transaction, err error)

func (*Client) LoadTransactionStatus

func (c *Client) LoadTransactionStatus(id string, queries ...Q) (transactionHistory TransactionStatus, err error)

func (*Client) LoadTransactions

func (c *Client) LoadTransactions(queries ...Q) (tPage TransactionsPage, err error)

func (*Client) LoadTransactionsByAccount

func (c *Client) LoadTransactionsByAccount(id string, queries ...Q) (tPage TransactionsPage, err error)

func (*Client) Post

func (c *Client) Post(path string, body []byte, headers http.Header) (response *http.Response, err error)

func (*Client) StreamAccount

func (c *Client) StreamAccount(ctx context.Context, handler func(Account), ids ...string) error

Stream account updates from the node

Params:

ctx = Context to use. The streaming starts a goroutine and doesn't stop.
      A common pattern is to pass `context.WithCancel(context.Background())`.
      See go's `context` package for more details.
handler = The handler function that will be called every time an account is updated.

Returns: An `error` object, or `nil`

func (*Client) StreamTransactionStatus

func (c *Client) StreamTransactionStatus(ctx context.Context, id string, handler func(TransactionStatus)) (err error)

func (*Client) StreamTransactions

func (c *Client) StreamTransactions(ctx context.Context, handler func(Transaction), ids ...string) error

Stream transactions from the node

Params:

ctx = Context to use. The streaming starts a goroutine and doesn't stop.
      A common pattern is to pass `context.WithCancel(context.Background())`.
      See go's `context` package for more details.
handler = The handler function that will be called every time a transaction is received.
ids     = An (optional) list of transaction hashes to listen to.
          If `nil`, all transactions will be streamed to the handler.

Returns: An `error` object, or `nil`

func (*Client) StreamTransactionsByAccount

func (c *Client) StreamTransactionsByAccount(ctx context.Context, id string, handler func(Transaction)) (err error)

func (*Client) SubmitTransaction

func (c *Client) SubmitTransaction(tx []byte) (TransactionPostError, error)

Submit a transaction to the node (via POST `UrlTransactions`)

Params:

tx = JSON serialized Transaction that will be sent as body

Returns:

TransactionPostError = An object describing the node's answer if there's an error
error = An error object, or `nil`

func (*Client) SubmitTransactionAndWait

func (c *Client) SubmitTransactionAndWait(hash string, tx []byte) (pTransaction TransactionPostError, err error)

Submit a transaction to the node (via POST `UrlTransactions`)

Params:

hash = the hash of the transaction
tx = JSON serialized Transaction that will be sent as body

Returns:

TransactionPostError = An object describing the node's answer if there's an error
error = An error object, or `nil`

func (*Client) ToResponse

func (c *Client) ToResponse(resp *http.Response, response interface{}) (err error)

type CollectTxFee

type CollectTxFee struct {
	Target    string `json:"target"`
	Amount    []byte `json:"amount"`
	Txs       uint64 `json:"txs"`
	Height    uint64 `json:"block-height"`
	BlockHash string `json:"block-hash"`
	TotalTxs  uint64 `json:"total-txs"`
	TotalOps  uint64 `json:"total-ops"`
}

type CongressVoting

type CongressVoting struct {
	Contract string `json:"contract"`
	Voting   struct {
		Start uint64 `json:"start"`
		End   uint64 `json:"end"`
	} `json:"voting"`
	FundingAddress string        `json:"funding_address"`
	Amount         common.Amount `json:"amount"`
}

type CongressVotingResult

type CongressVotingResult struct {
	BallotStamps struct {
		Hash string   `json:"hash"`
		Urls []string `json:"urls"`
	} `json:"ballot_stamps"`
	Voters struct {
		Hash string   `json:"hash"`
		Urls []string `json:"urls"`
	} `json:"voters"`
	Membership struct {
		Hash string   `json:"hash"`
		Urls []string `json:"urls"`
	} `json:"membership"`
	Result struct {
		Count uint64 `json:"count"`
		Yes   uint64 `json:"yes"`
		No    uint64 `json:"no"`
		ABS   uint64 `json:"abs"`
	} `json:"result"`
	CongressVotingHash string `json:"congress_voting_hash"`
}

type CreateAccount

type CreateAccount struct {
	Target string `json:"target"`
	Amount []byte `json:"amount"`
	Linked string `json:"linked,omitempty"`
}

type Error

type Error struct {
	Problem Problem
}

func (Error) Error

func (e Error) Error() string

type FrozenAccount

type FrozenAccount struct {
	Links struct {
		Self Link `json:"self"`
	} `json:"_links"`

	Address                    string                      `json:"address"`
	Linked                     string                      `json:"linked"`
	CreateBlockHeight          uint64                      `json:"create_block_height"`
	CreateOpHash               string                      `json:"create_op_hash"`
	SequenceID                 uint64                      `json:"sequence_id"`
	Amount                     common.Amount               `json:"amount"`
	State                      resource.FrozenAccountState `json:"state"`
	UnfreezingBlockHeight      uint64                      `json:"unfreezing_block_height"`
	UnfreezingOpHash           string                      `json:"unfreezing_op_hash"`
	UnfreezingRemainingBlockes uint64                      `json:"unfreezing_remaining_blockheight"`
	PaymentOpHash              string                      `json:"payment_op_hash"`
}

type FrozenAccountsPage

type FrozenAccountsPage struct {
	Links struct {
		Self Link `json:"self"`
	} `json:"_links"`
	Embedded struct {
		Records []FrozenAccount `json:"records"`
	} `json:"_embedded"`
}

type Inflation

type Inflation struct {
	Target         string `json:"target"`
	Amount         []byte `json:"amount"`
	InitialBalance []byte `json:"initial-balance"`
	Ratio          string `json:"ratio"`
	Height         uint64 `json:"block-height"`
	BlockHash      string `json:"block-hash"`
	TotalTxs       uint64 `json:"total-txs"`
	TotalOps       uint64 `json:"total-ops"`
}
type Link struct {
	Href      string `json:"href"`
	Templated bool   `json:"templated,omitempty"`
}

type Operation

type Operation struct {
	Links struct {
		Self        Link `json:"self"`
		Transaction Link `json:"transaction"`
	} `json:"_links"`
	Hash        string      `json:"hash"`
	Source      string      `json:"source"`
	Target      string      `json:"target"`
	Type        string      `json:"type"`
	TxHash      string      `json:"tx_hash"`
	BlockHeight uint64      `json:"block_height"`
	Index       uint64      `json:"index"`
	Body        interface{} `json:"body"`
}

type OperationsPage

type OperationsPage struct {
	Links struct {
		Self Link `json:"self"`
		Next Link `json:"next"`
		Prev Link `json:"prev"`
	} `json:"_links"`
	Embedded struct {
		Records []Operation `json:"records"`
	} `json:"_embedded"`
}

type Payment

type Payment struct {
	Target string `json:"target"`
	Amount []byte `json:"amount"`
}

type Problem

type Problem struct {
	Type     string                     `json:"type"`
	Title    string                     `json:"title"`
	Status   int                        `json:"status"`
	Detail   string                     `json:"detail,omitempty"`
	Instance string                     `json:"instance,omitempty"`
	Extras   map[string]json.RawMessage `json:"extras,omitempty"`
}

type Q

type Q struct {
	Key   QueryKey
	Value string
}

type Queries

type Queries []Q

type QueryKey

type QueryKey string
const (
	QueryLimit  QueryKey = "limit"
	QueryOrder  QueryKey = "reverse"
	QueryCursor QueryKey = "cursor"
	QueryType   QueryKey = "type"
)

func (QueryKey) String

func (qk QueryKey) String() string

type Transaction

type Transaction struct {
	Links struct {
		Self       Link `json:"self"`
		Account    Link `json:"account"`
		Operations Link `json:"operations"`
	} `json:"_links"`
	Hash           string `json:"hash"`
	Source         string `json:"source"`
	Fee            string `json:"fee"`
	SequenceID     uint64 `json:"sequence_id"`
	Created        string `json:"created"`
	OperationCount uint64 `json:"operation_count"`
}

type TransactionPostError

type TransactionPostError struct {
	Links struct {
		Self   Link `json:"self"`
		Status Link `json:"status"`
	} `json:"_links"`
	Hash    string      `json:"hash"`
	Status  string      `json:"status"`
	Message interface{} `json:"message"`
}

type TransactionStatus

type TransactionStatus struct {
	Links struct {
		Self        Link `json:"self"`
		Transaction Link `json:"transaction"`
	} `json:"_links"`
	Hash   string `json:"hash"`
	Status string `json:"status"`
}

type TransactionsPage

type TransactionsPage struct {
	Links struct {
		Self Link `json:"self"`
		Next Link `json:"next"`
		Prev Link `json:"prev"`
	} `json:"_links"`
	Embedded struct {
		Records []Transaction `json:"records"`
	} `json:"_embedded"`
}

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier