api

package module
v0.0.0-...-bea91e1 Latest Latest
Warning

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

Go to latest
Published: Nov 15, 2023 License: Apache-2.0 Imports: 25 Imported by: 0

README

Metamapp API Client

GoDoc

See https://dev.metamapp.xyz for more info.

Documentation

Overview

Package api implements the Mappchain API.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CadenceArgs

func CadenceArgs(args ...cadence.Value) ([]json.RawMessage, error)

CadenceArgs serializes the given Cadence values.

func JSONMessagesToByteSlices

func JSONMessagesToByteSlices(args []json.RawMessage) [][]byte

JSONMessagesToByteSlices converts a slice of json RawMessage values to a slice of plain byte slices.

func MustCadenceArgs

func MustCadenceArgs(args ...cadence.Value) []json.RawMessage

MustCadenceArgs tries to serialize the given Cadence values and panics with an error if it fails.

Types

type ChallengeRequest

type ChallengeRequest interface {
	Difficulty(cfg Difficulty) int
	ToTxn() (*raw.Transaction, error)
}

ChallengeRequest defines the interface a client request struct needs to implement if it needs to be accompanied with a challenge and proof.

type Client

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

Client provides a Mappchain API client.

func NewClient

func NewClient(opts ...ClientOption) *Client

NewClient returns a new Mappchain API client.

func (*Client) CreateAccount

func (c *Client) CreateAccount(ctx context.Context, key *SigningKey, req *CreateAccountRequest) (*CreateAccountResponse, error)

CreateAccount sends a request to create a new account.

func (*Client) ExecuteRead

func (c *Client) ExecuteRead(ctx context.Context, req *ExecuteReadRequest) (*ExecuteReadResponse, error)

ExecuteRead sends a request to execute a read transaction.

func (*Client) ExecuteWrite

func (c *Client) ExecuteWrite(ctx context.Context, req *ExecuteWriteRequest) (*ExecuteWriteResponse, error)

ExecuteWrite sends a request to execute a write transaction.

func (*Client) GetBlock

func (c *Client) GetBlock(ctx context.Context, req *GetBlockRequest) (*GetBlockResponse, error)

GetBlock sends a request to get the info for a specific block.

func (*Client) GetChainInfo

func (c *Client) GetChainInfo(ctx context.Context) (*GetChainInfoResponse, error)

GetChainInfo sends a request to get the chain metadata.

func (*Client) GetTransactionResult

GetTransactionResult sends a request to get the state of a transaction.

func (*Client) ListFieldValues

func (c *Client) ListFieldValues(ctx context.Context, req *ListFieldValuesRequest) (*ListFieldValuesResponse, error)

ListFieldValues sends a request to get all values of a specific event field.

func (*Client) QueryEvents

func (c *Client) QueryEvents(ctx context.Context, req *QueryEventsRequest) (*QueryEventsResponse, error)

QueryEvents sends a request to query blocks for a specific event type.

func (*Client) SetSigner

func (c *Client) SetSigner(s *Signer) error

SetSigner enables auto-signing with the given account.

func (*Client) UploadFile

func (c *Client) UploadFile(ctx context.Context, req *UploadFileRequest) (*UploadFileResponse, error)

UploadFile sends a request to upload a file to the chain.

type ClientOption

type ClientOption func(*Client)

ClientOption values can be used to configure the API client.

func WithDebugLogger

func WithDebugLogger(log func(format string, args ...interface{})) ClientOption

WithDebugLogger configures the API client with a specific debug logger.

func WithEndpoint

func WithEndpoint(v string) ClientOption

WithEndpoint configures the API client with a specific API endpoint.

func WithTimeout

func WithTimeout(d time.Duration) ClientOption

WithTimeout configures the API client with a specific timeout duration.

type CreateAccountRequest

type CreateAccountRequest struct {
	About     string    `json:"about"`
	Challenge string    `json:"challenge"`
	Image     string    `json:"image"`
	Name      string    `json:"name"`
	Nonce     string    `json:"nonce"`
	Proof     string    `json:"proof"`
	PublicKey PublicKey `json:"publicKey"`
	Tags      []string  `json:"tags"`
}

CreateAccountRequest represents the /api/v1/CreateAccount request.

func (*CreateAccountRequest) Difficulty

func (c *CreateAccountRequest) Difficulty(cfg Difficulty) int

func (*CreateAccountRequest) ToTxn

func (c *CreateAccountRequest) ToTxn() (*raw.Transaction, error)

type CreateAccountResponse

type CreateAccountResponse struct {
	TransactionHash string `json:"transactionHash"`
}

CreateAccountResponse represents the /api/v1/CreateAccount response.

type Difficulty

type Difficulty struct {
	CreateAccount float64 `json:"createAccount"`
	ExecuteWrite  float64 `json:"executeWrite"`
	PerKilobyte   float64 `json:"perKilobyte"`
	UploadFile    float64 `json:"uploadFile"`
}

Difficulty specifies the difficulty level for different operations.

type ErrorInfo

type ErrorInfo struct {
	Message string `json:"message"`
	Type    string `json:"type"`
}

ErrorInfo specifies details about a site error.

func (ErrorInfo) Error

func (e ErrorInfo) Error() string

type ErrorResponse

type ErrorResponse struct {
	Error ErrorInfo `json:"error"`
}

ErrorResponse represents a site error response.

type Event

type Event struct {
	Fields []*Field `json:"fields"`
	Type   string   `json:"type"`
}

Event represents an individual event emitted during transaction execution.

type EventOccurence

type EventOccurence struct {
	BlockHeight      uint64 `json:"blockHeight"`
	Event            Event  `json:"event"`
	EventIndex       uint32 `json:"eventIndex"`
	TransactionHash  string `json:"transactionHash"`
	TransactionIndex uint32 `json:"transactionIndex"`
}

EventOccurence represents the individual occurence of an event within a transaction.

type ExecuteReadRequest

type ExecuteReadRequest struct {
	Arguments []json.RawMessage `json:"args"`
	Height    uint64            `json:"height"`
	Script    string            `json:"script"`
}

ExecuteReadRequest represents the /api/v1/ExecuteRead request.

type ExecuteReadResponse

type ExecuteReadResponse struct {
	Result json.RawMessage `json:"result"`
}

ExecuteReadResponse represents the /api/v1/ExecuteRead response.

type ExecuteWriteRequest

type ExecuteWriteRequest struct {
	Arguments  []json.RawMessage `json:"args"`
	Challenge  string            `json:"challenge"`
	Nonce      string            `json:"nonce"`
	Proof      string            `json:"proof"`
	Script     string            `json:"script"`
	Signatures []Signature       `json:"signatures"`
}

ExecuteWriteRequest represents the /api/v1/ExecuteWrite request.

func (*ExecuteWriteRequest) Difficulty

func (e *ExecuteWriteRequest) Difficulty(cfg Difficulty) int

func (*ExecuteWriteRequest) ToTxn

func (e *ExecuteWriteRequest) ToTxn() (*raw.Transaction, error)

type ExecuteWriteResponse

type ExecuteWriteResponse struct {
	TransactionHash string `json:"transactionHash"`
}

ExecuteWriteResponse represents the /api/v1/ExecuteWrite response.

type Field

type Field struct {
	Name  string          `json:"name"`
	Value json.RawMessage `json:"value"`
}

Field represents an individual field within an emitted event.

type Filter

type Filter struct {
	FieldIndex uint8           `json:"fieldIndex"`
	Operation  string          `json:"operation"`
	Value      json.RawMessage `json:"value"`
}

Filter defines a sub-query on the value of an event field.

type GetBlockRequest

type GetBlockRequest struct {
	Height uint64 `json:"height"`
}

GetBlockRequest represents the /api/v1/GetBlock request.

type GetBlockResponse

type GetBlockResponse struct {
	Executed      bool          `json:"executed"`
	Hash          string        `json:"hash"`
	Height        uint64        `json:"height"`
	PrevBlockHash string        `json:"prevBlockHash"`
	Timestamp     uint64        `json:"timestamp"`
	Transactions  []Transaction `json:"transactions"`
}

GetBlockResponse represents the /api/v1/GetBlock response.

type GetChainInfoResponse

type GetChainInfoResponse struct {
	ChainID           uint64      `json:"chainId"`
	Challenge         string      `json:"challenge"`
	ChallengeRotation uint32      `json:"challengeRotation"`
	Difficulty        Difficulty  `json:"difficulty"`
	KDFParams         KDFParams   `json:"kdfParams"`
	LatestBlock       LatestBlock `json:"latestBlock"`
	MaxUploadFileSize int64       `json:"maxUploadFileSize"`
}

GetChainInfoResponse represents the /api/v1/GetChainInfo response.

func (*GetChainInfoResponse) CheckInterval

func (g *GetChainInfoResponse) CheckInterval() time.Duration

CheckInterval returns the time duration for updating the challenge.

type GetTransactionResultRequest

type GetTransactionResultRequest struct {
	TransactionHash string `json:"transactionHash"`
}

GetTransactionResultRequest represents the /api/v1/GetTransactionResult request.

type GetTransactionResultResponse

type GetTransactionResultResponse struct {
	Executed bool               `json:"executed"`
	Height   uint64             `json:"height"`
	Result   *TransactionResult `json:"result"`
}

GetTransactionResultResponse represents the /api/v1/GetTransactionResult response.

type KDFParams

type KDFParams struct {
	Algorithm   string `json:"algorithm"`
	Iterations  int    `json:"iterations"`
	KeyLength   int    `json:"keyLength"`
	Memory      int    `json:"memory"`
	Parallelism int    `json:"parallelism"`
}

KDFParams defines the configuration for applying the key derivation function.

type LatestBlock

type LatestBlock struct {
	Executed uint64 `json:"executed"`
	Hash     string `json:"hash"`
	Height   uint64 `json:"height"`
}

LatestBlock specifies the state of the latest blocks that have been produced and executed.

type ListFieldValuesRequest

type ListFieldValuesRequest struct {
	Cursor     string `json:"cursor"`
	EventType  string `json:"eventType"`
	FieldIndex uint8  `json:"fieldIndex"`
}

ListFieldValuesRequest represents the /api/v1/ListFieldValues request.

type ListFieldValuesResponse

type ListFieldValuesResponse struct {
	Cursor string            `json:"cursor"`
	Values []json.RawMessage `json:"values"`
}

ListFieldValuesResponse represents the /api/v1/ListFieldValues request.

type PublicKey

type PublicKey struct {
	HashAlgorithm    string `json:"hashAlgorithm"`
	SigningAlgorithm string `json:"signingAlgorithm"`
	Value            string `json:"value"`
	Weight           uint32 `json:"weight"`
}

PublicKey represents a public key for an account.

type QueryEventsRequest

type QueryEventsRequest struct {
	StartBlock uint64   `json:"startBlock"`
	EventType  string   `json:"eventType"`
	Filters    []Filter `json:"filters"`
}

QueryEventsRequest represents the /api/v1/QueryEvents request.

type QueryEventsResponse

type QueryEventsResponse struct {
	EndBlock uint64            `json:"endBlock"`
	Results  []*EventOccurence `json:"results"`
}

QueryEventsResponse represents the /api/v1/QueryEvents response.

type Seal

type Seal struct {
	Hash   string `json:"hash"`
	Height uint64 `json:"height"`
}

Seal represents the hash for the events generated from a specific block.

type Signature

type Signature struct {
	AccountID string `json:"accountId"`
	KeyIndex  uint32 `json:"keyIndex"`
	Value     string `json:"value"`
}

Signature represents the signature for an on-chain transaction.

func (Signature) ToRaw

func (s Signature) ToRaw() (*raw.Signature, error)

type Signer

type Signer struct {
	AccountID  string
	KeyIndex   uint32
	SigningKey *SigningKey
}

Signer represents an on-chain account and its signing key.

type SigningKey

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

SigningKey represents a key to use for signing transactions.

func GenerateKey

func GenerateKey() (*SigningKey, error)

GenerateKey creates a fresh key for signing transactions.

func LoadKey

func LoadKey(privkey []byte) (*SigningKey, error)

LoadKey creates a signing key from the raw private key.

func (*SigningKey) PublicKey

func (s *SigningKey) PublicKey() PublicKey

PublicKey returns the default public key specification for the signing key.

func (*SigningKey) RawPrivateKey

func (s *SigningKey) RawPrivateKey() []byte

RawPrivateKey returns the raw bytes of the underlying private key.

func (*SigningKey) Sign

func (s *SigningKey) Sign(data []byte) ([]byte, error)

Sign will sign the given transaction hash with the underlying private key.

type Transaction

type Transaction struct {
	Arguments  []json.RawMessage `json:"args"`
	Hash       string            `json:"hash"`
	Nonce      string            `json:"nonce"`
	Script     string            `json:"script"`
	Signatures []Signature       `json:"signatures"`
	Type       string            `json:"type"`
}

Transaction represents a transaction that has been processed on-chain.

type TransactionResult

type TransactionResult struct {
	Error            string   `json:"error"`
	Events           []*Event `json:"events"`
	Log              []string `json:"log"`
	Status           string   `json:"status"`
	TransactionIndex uint32   `json:"transactionIndex"`
}

TransactionResult represents the result of executing a transaction.

type UploadFileRequest

type UploadFileRequest struct {
	Challenge string `json:"challenge"`
	File      []byte `json:"file"`
	Nonce     string `json:"nonce"`
	Proof     string `json:"proof"`
}

UploadFileRequest represents the /api/v1/UploadFile request.

func (*UploadFileRequest) Difficulty

func (u *UploadFileRequest) Difficulty(cfg Difficulty) int

func (*UploadFileRequest) ToTxn

func (u *UploadFileRequest) ToTxn() (*raw.Transaction, error)

type UploadFileResponse

type UploadFileResponse struct {
	FileID string `json:"fileId"`
}

UploadFileResponse represents the /api/v1/UploadFile response.

Directories

Path Synopsis
Package jsoncdc provides support for JSON encoding and decoding of Cadence values.
Package jsoncdc provides support for JSON encoding and decoding of Cadence values.
Package script defines some Cadence scripts for the core Mapp framework.
Package script defines some Cadence scripts for the core Mapp framework.

Jump to

Keyboard shortcuts

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