hermez-node/api/token.go
api/token.goRaw
1package api
2
3import (
4 "errors"
5 "net/http"
6
7 "github.com/gin-gonic/gin"
8 "github.com/hermeznetwork/hermez-node/common"
9 "github.com/hermeznetwork/hermez-node/db/historydb"
10)
11
12func (a *API) getToken(c *gin.Context) {
13 // Get TokenID
14 tokenIDUint, err := parseParamUint("id", nil, 0, maxUint32, c)
15 if err != nil {
16 retBadReq(err, c)
17 return
18 }
19 if tokenIDUint == nil { // tokenID is required
20 retBadReq(errors.New("Invalid tokenID"), c)
21 return
22 }
23 tokenID := common.TokenID(*tokenIDUint)
24 // Fetch token from historyDB
25 token, err := a.h.GetTokenAPI(tokenID)
26 if err != nil {
27 retSQLErr(err, c)
28 return
29 }
30 c.JSON(http.StatusOK, token)
31}
32
33func (a *API) getTokens(c *gin.Context) {
34 // Account filters
35 tokenIDs, symbols, name, err := parseTokenFilters(c)
36 if err != nil {
37 retBadReq(err, c)
38 return
39 }
40
41 // Pagination
42 fromItem, order, limit, err := parsePagination(c)
43 if err != nil {
44 retBadReq(err, c)
45 return
46 }
47 // Fetch exits from historyDB
48 tokens, pendingItems, err := a.h.GetTokensAPI(
49 tokenIDs, symbols, name, fromItem, limit, order,
50 )
51 if err != nil {
52 retSQLErr(err, c)
53 return
54 }
55
56 // Build successful response
57 type tokensResponse struct {
58 Tokens []historydb.TokenWithUSD `json:"tokens"`
59 PendingItems uint64 `json:"pendingItems"`
60 }
61 c.JSON(http.StatusOK, &tokensResponse{
62 Tokens: tokens,
63 PendingItems: pendingItems,
64 })
65}