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