hermez-node/api/coordinator.go
api/coordinator.goRaw
1package api
2
3import (
4 "net/http"
5
6 "github.com/gin-gonic/gin"
7 "github.com/hermeznetwork/hermez-node/db/historydb"
8)
9
10func (a *API) getCoordinators(c *gin.Context) {
11 bidderAddr, err := parseQueryEthAddr("bidderAddr", c)
12 if err != nil {
13 retBadReq(err, c)
14 return
15 }
16 forgerAddr, err := parseQueryEthAddr("forgerAddr", c)
17 if err != nil {
18 retBadReq(err, c)
19 return
20 }
21 // Pagination
22 fromItem, order, limit, err := parsePagination(c)
23 if err != nil {
24 retBadReq(err, c)
25 return
26 }
27
28 // Fetch coordinators from historyDB
29 coordinators, pendingItems, err := a.h.GetCoordinatorsAPI(bidderAddr, forgerAddr, fromItem, limit, order)
30 if err != nil {
31 retSQLErr(err, c)
32 return
33 }
34
35 // Build succesfull response
36 type coordinatorsResponse struct {
37 Coordinators []historydb.CoordinatorAPI `json:"coordinators"`
38 PendingItems uint64 `json:"pendingItems"`
39 }
40 c.JSON(http.StatusOK, &coordinatorsResponse{
41 Coordinators: coordinators,
42 PendingItems: pendingItems,
43 })
44}