srv

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Jul 12, 2019 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package srv provides the JSON RPC 2.0 API server and RPC functions. It calls out to the fatd/db package to obtain data about the current state saved to the DB.

Index

Constants

View Source
const (
	FatdDefault = "http://localhost:8078"
)

Defaults for the factomd and factom-walletd endpoints.

Variables

View Source
var (
	ErrorTokenNotFound = jrpc.NewError(-32800, "Token Not Found",
		"token may be invalid, or not yet issued or tracked")
	ErrorTransactionNotFound = jrpc.NewError(-32803, "Transaction Not Found",
		"no matching tx-id was found")
	ErrorInvalidTransaction = jrpc.NewError(-32804, "Invalid Transaction", nil)
	ErrorTokenSyncing       = jrpc.NewError(-32805, "Token Syncing",
		"token is in the process of syncing")
	ErrorNoEC = jrpc.NewError(-32806, "No Entry Credits",
		"not configured with entry credits")
)
View Source
var (
	APIVersion              = "1"
	FatdVersionHeaderKey    = http.CanonicalHeaderKey("Fatd-Version")
	FatdAPIVersionHeaderKey = http.CanonicalHeaderKey("Fatd-Api-Version")
)

Functions

func Start

func Start(stop <-chan struct{}) (done <-chan struct{})

Start the server in its own goroutine. If stop is closed, the server is closed and any goroutines will exit. The done channel is closed when the server exits for any reason. If the done channel is closed before the stop channel is closed, an error occurred. Errors are logged.

Types

type Client added in v0.5.0

type Client struct {
	FatdServer string
	jrpc.Client
}

Client makes RPC requests to fatd's APIs. Client embeds a jsonrpc2.Client, and thus also the http.Client. Use jsonrpc2.Client's BasicAuth settings to set up BasicAuth and http.Client's transport settings to configure TLS.

func NewClient added in v0.5.0

func NewClient() *Client

NewClient returns a pointer to a Client initialized with the default localhost endpoints for factomd and factom-walletd, and 15 second timeouts for each of the http.Clients.

func (*Client) Request added in v0.5.0

func (c *Client) Request(method string, params, result interface{}) error

Request makes a request to fatd's v1 API.

type Params

type Params interface {
	IsValid() error
	ValidChainID() *factom.Bytes32
}

type ParamsGetAllNFTokens

type ParamsGetAllNFTokens struct {
	ParamsToken
	ParamsPagination
}

func (*ParamsGetAllNFTokens) IsValid

func (p *ParamsGetAllNFTokens) IsValid() error

type ParamsGetBalance

type ParamsGetBalance struct {
	ParamsToken
	Address *factom.FAAddress `json:"address,omitempty"`
}

func (ParamsGetBalance) IsValid

func (p ParamsGetBalance) IsValid() error

type ParamsGetBalances added in v0.6.0

type ParamsGetBalances struct {
	Address *factom.FAAddress `json:"address,omitempty"`
}

func (ParamsGetBalances) IsValid added in v0.6.0

func (p ParamsGetBalances) IsValid() error

func (ParamsGetBalances) ValidChainID added in v0.6.0

func (p ParamsGetBalances) ValidChainID() *factom.Bytes32

type ParamsGetNFBalance

type ParamsGetNFBalance struct {
	ParamsToken
	ParamsPagination
	Address *factom.FAAddress `json:"address,omitempty"`
}

func (*ParamsGetNFBalance) IsValid

func (p *ParamsGetNFBalance) IsValid() error

type ParamsGetNFToken

type ParamsGetNFToken struct {
	ParamsToken
	NFTokenID *fat1.NFTokenID `json:"nftokenid"`
}

func (ParamsGetNFToken) IsValid

func (p ParamsGetNFToken) IsValid() error

type ParamsGetTransaction

type ParamsGetTransaction struct {
	ParamsToken
	Hash *factom.Bytes32 `json:"entryhash"`
}

ParamsGetTransaction is used to query for a single particular transaction with the given Entry Hash.

func (ParamsGetTransaction) IsValid

func (p ParamsGetTransaction) IsValid() error

type ParamsGetTransactions

type ParamsGetTransactions struct {
	ParamsToken
	ParamsPagination
	// Transaction filters
	NFTokenID *fat1.NFTokenID    `json:"nftokenid,omitempty"`
	Addresses []factom.FAAddress `json:"addresses,omitempty"`
	StartHash *factom.Bytes32    `json:"entryhash,omitempty"`
	ToFrom    string             `json:"tofrom,omitempty"`
}

func (*ParamsGetTransactions) IsValid

func (p *ParamsGetTransactions) IsValid() error

type ParamsPagination added in v0.6.0

type ParamsPagination struct {
	Page  uint64 `json:"page,omitempty"`
	Limit uint64 `json:"limit,omitempty"`
	Order string `json:"order,omitempty"`
}

func (*ParamsPagination) IsValid added in v0.6.0

func (p *ParamsPagination) IsValid() error

type ParamsSendTransaction

type ParamsSendTransaction struct {
	ParamsToken
	ExtIDs  []factom.Bytes `json:"extids"`
	Content factom.Bytes   `json:"content"`
}

func (ParamsSendTransaction) Entry

func (ParamsSendTransaction) IsValid

func (p ParamsSendTransaction) IsValid() error

type ParamsToken

type ParamsToken struct {
	ChainID       *factom.Bytes32 `json:"chainid,omitempty"`
	TokenID       string          `json:"tokenid,omitempty"`
	IssuerChainID *factom.Bytes32 `json:"issuerid,omitempty"`
}

ParamsToken scopes a request down to a single FAT token using either the ChainID or both the TokenID and the IssuerChainID.

func (ParamsToken) IsValid

func (p ParamsToken) IsValid() error

func (ParamsToken) ValidChainID

func (p ParamsToken) ValidChainID() *factom.Bytes32

type ResultGetBalances added in v0.6.0

type ResultGetBalances map[factom.Bytes32]uint64

func (ResultGetBalances) MarshalJSON added in v0.6.0

func (r ResultGetBalances) MarshalJSON() ([]byte, error)

func (*ResultGetBalances) UnmarshalJSON added in v0.6.0

func (r *ResultGetBalances) UnmarshalJSON(data []byte) error

type ResultGetDaemonProperties

type ResultGetDaemonProperties struct {
	FatdVersion string `json:"fatdversion"`
	APIVersion  string `json:"apiversion"`
}

type ResultGetIssuance

type ResultGetIssuance struct {
	ParamsToken
	Hash      *factom.Bytes32 `json:"entryhash"`
	Timestamp int64           `json:"timestamp"`
	Issuance  fat.Issuance    `json:"issuance"`
}

type ResultGetNFToken

type ResultGetNFToken struct {
	NFTokenID fat1.NFTokenID    `json:"id"`
	Owner     *factom.FAAddress `json:"owner"`
	Metadata  json.RawMessage   `json:"metadata,omitempty"`
}

type ResultGetStats

type ResultGetStats struct {
	ParamsToken
	Issuance                 *fat.Issuance
	CirculatingSupply        uint64 `json:"circulating"`
	Burned                   uint64 `json:"burned"`
	Transactions             int    `json:"transactions"`
	IssuanceTimestamp        int64  `json:"issuancets"`
	LastTransactionTimestamp int64  `json:"lasttxts,omitempty"`
}

type ResultGetSyncStatus

type ResultGetSyncStatus struct {
	Sync    uint32 `json:"syncheight"`
	Current uint32 `json:"factomheight"`
}

type ResultGetTransaction

type ResultGetTransaction struct {
	Hash      *factom.Bytes32 `json:"entryhash"`
	Timestamp int64           `json:"timestamp"`
	Tx        interface{}     `json:"data"`
}

Jump to

Keyboard shortcuts

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