arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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 succesfull 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}