127 lines
3.9 KiB
Go
127 lines
3.9 KiB
Go
|
package ankr
|
||
|
|
||
|
type MaultichainOption func(*TransactionsByAddressRequest)
|
||
|
|
||
|
type TransactionsByAddressRequest struct {
|
||
|
ID int64 `json:"id"`
|
||
|
Jsonrpc string `json:"jsonrpc"`
|
||
|
Method string `json:"method"`
|
||
|
RequestParams RequestParams `json:"params"`
|
||
|
}
|
||
|
|
||
|
func WithBlochchain(blockchain string) MaultichainOption {
|
||
|
return func(h *TransactionsByAddressRequest) {
|
||
|
h.RequestParams.Blockchain = blockchain
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func WithContract(address string) MaultichainOption {
|
||
|
return func(h *TransactionsByAddressRequest) {
|
||
|
h.RequestParams.Address = address
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func WithBlocks(fromBlock int64, toBlock int64) MaultichainOption {
|
||
|
return func(h *TransactionsByAddressRequest) {
|
||
|
h.RequestParams.FromBlock = fromBlock
|
||
|
h.RequestParams.ToBlock = toBlock
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func WithPageToken(pageToken string) MaultichainOption {
|
||
|
return func(h *TransactionsByAddressRequest) {
|
||
|
h.RequestParams.PageToken = pageToken
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func NewTransactionsByAddressRequest(opts ...MaultichainOption) *TransactionsByAddressRequest {
|
||
|
const (
|
||
|
defaultMethod = "ankr_getTransactionsByAddress"
|
||
|
)
|
||
|
|
||
|
h := &TransactionsByAddressRequest{
|
||
|
ID: 1,
|
||
|
Jsonrpc: "2.0",
|
||
|
Method: defaultMethod,
|
||
|
RequestParams: RequestParams{
|
||
|
DescOrder: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, opt := range opts {
|
||
|
opt(h)
|
||
|
}
|
||
|
|
||
|
return h
|
||
|
}
|
||
|
|
||
|
type RequestParams struct {
|
||
|
Address string `json:"address"`
|
||
|
Blockchain string `json:"blockchain"`
|
||
|
FromBlock int64 `json:"fromBlock,omitempty"`
|
||
|
ToBlock int64 `json:"toBlock,omitempty"`
|
||
|
FromTimestamp int64 `json:"fromTimestamp,omitempty"`
|
||
|
ToTimestamp int64 `json:"toTimestamp,omitempty"`
|
||
|
IncludeLogs bool `json:"includeLogs,omitempty"`
|
||
|
DescOrder bool `json:"descOrder,omitempty"`
|
||
|
PageSize int64 `json:"pageSize,omitempty"`
|
||
|
PageToken string `json:"pageToken,omitempty"`
|
||
|
}
|
||
|
|
||
|
type TransactionsByAddressResponse struct {
|
||
|
ID int64 `json:"id"`
|
||
|
Jsonrpc string `json:"jsonrpc"`
|
||
|
Result struct {
|
||
|
NextPageToken string `json:"nextPageToken"`
|
||
|
Transactions []struct {
|
||
|
BlockHash string `json:"blockHash"`
|
||
|
BlockNumber string `json:"blockNumber"`
|
||
|
Blockchain string `json:"blockchain"`
|
||
|
CumulativeGasUsed string `json:"cumulativeGasUsed"`
|
||
|
From string `json:"from"`
|
||
|
Gas string `json:"gas"`
|
||
|
GasPrice string `json:"gasPrice"`
|
||
|
GasUsed string `json:"gasUsed"`
|
||
|
Hash string `json:"hash"`
|
||
|
Input string `json:"input"`
|
||
|
Logs []struct {
|
||
|
Address string `json:"address"`
|
||
|
BlockHash string `json:"blockHash"`
|
||
|
BlockNumber string `json:"blockNumber"`
|
||
|
Blockchain string `json:"blockchain"`
|
||
|
Data string `json:"data"`
|
||
|
LogIndex string `json:"logIndex"`
|
||
|
Removed bool `json:"removed"`
|
||
|
Topics []string `json:"topics"`
|
||
|
TransactionHash string `json:"transactionHash"`
|
||
|
TransactionIndex string `json:"transactionIndex"`
|
||
|
} `json:"logs"`
|
||
|
Nonce string `json:"nonce"`
|
||
|
R string `json:"r"`
|
||
|
S string `json:"s"`
|
||
|
Status string `json:"status"`
|
||
|
Timestamp string `json:"timestamp"`
|
||
|
To string `json:"to"`
|
||
|
TransactionIndex string `json:"transactionIndex"`
|
||
|
Type string `json:"type"`
|
||
|
V string `json:"v"`
|
||
|
Value string `json:"value"`
|
||
|
} `json:"transactions"`
|
||
|
} `json:"result"`
|
||
|
}
|
||
|
|
||
|
type BlockchainStatsResponse struct {
|
||
|
ID int64 `json:"id"`
|
||
|
Jsonrpc string `json:"jsonrpc"`
|
||
|
Result struct {
|
||
|
Stats []struct {
|
||
|
BlockTimeMs int64 `json:"blockTimeMs"`
|
||
|
Blockchain string `json:"blockchain"`
|
||
|
LatestBlockNumber int64 `json:"latestBlockNumber"`
|
||
|
NativeCoinUsdPrice string `json:"nativeCoinUsdPrice"`
|
||
|
TotalEventsCount int64 `json:"totalEventsCount"`
|
||
|
TotalTransactionsCount int64 `json:"totalTransactionsCount"`
|
||
|
} `json:"stats"`
|
||
|
} `json:"result"`
|
||
|
}
|