arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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"
 8	"github.com/hermeznetwork/hermez-node/db/historydb"
 9)
10
11func (a *API) getCoordinator(c *gin.Context) {
12	// Get bidderAddr
13	const name = "bidderAddr"
14	bidderAddr, err := parseParamEthAddr(name, c)
15
16	if err != nil {
17		retBadReq(err, c)
18		return
19	} else if bidderAddr == nil {
20		retBadReq(ErrNillBidderAddr, c)
21		return
22	}
23
24	coordinator, err := a.h.GetCoordinatorAPI(*bidderAddr)
25	if err != nil {
26		retSQLErr(err, c)
27		return
28	}
29
30	c.JSON(http.StatusOK, coordinator)
31}
32
33func (a *API) getCoordinators(c *gin.Context) {
34	// Pagination
35	fromItem, order, limit, err := parsePagination(c)
36	if err != nil {
37		retBadReq(err, c)
38		return
39	}
40
41	// Fetch coordinators from historyDB
42	coordinators, pagination, err := a.h.GetCoordinatorsAPI(fromItem, limit, order)
43	if err != nil {
44		retSQLErr(err, c)
45		return
46	}
47
48	// Build succesfull response
49	type coordinatorsResponse struct {
50		Coordinators []historydb.CoordinatorAPI `json:"coordinators"`
51		Pagination   *db.Pagination             `json:"pagination"`
52	}
53	c.JSON(http.StatusOK, &coordinatorsResponse{
54		Coordinators: coordinators,
55		Pagination:   pagination,
56	})
57}