You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

78 lines
2.3 KiB

package api
import (
"errors"
"github.com/gin-gonic/gin"
"github.com/hermeznetwork/hermez-node/db/historydb"
"github.com/hermeznetwork/hermez-node/db/l2db"
"github.com/hermeznetwork/hermez-node/db/statedb"
)
var h *historydb.HistoryDB
var cg *configAPI
var s *statedb.StateDB
var l2 *l2db.L2DB
// SetAPIEndpoints sets the endpoints and the appropriate handlers, but doesn't start the server
func SetAPIEndpoints(
coordinatorEndpoints, explorerEndpoints bool,
server *gin.Engine,
hdb *historydb.HistoryDB,
sdb *statedb.StateDB,
l2db *l2db.L2DB,
config *configAPI,
) error {
// Check input
// TODO: is stateDB only needed for explorer endpoints or for both?
if coordinatorEndpoints && l2db == nil {
return errors.New("cannot serve Coordinator endpoints without L2DB")
}
if explorerEndpoints && hdb == nil {
return errors.New("cannot serve Explorer endpoints without HistoryDB")
}
h = hdb
cg = config
s = sdb
l2 = l2db
// Add coordinator endpoints
if coordinatorEndpoints {
// Account
server.POST("/account-creation-authorization", postAccountCreationAuth)
server.GET("/account-creation-authorization/:hermezEthereumAddress", getAccountCreationAuth)
// Transaction
server.POST("/transactions-pool", postPoolTx)
server.GET("/transactions-pool/:id", getPoolTx)
}
// Add explorer endpoints
if explorerEndpoints {
// Account
server.GET("/accounts", getAccounts)
server.GET("/accounts/:hermezEthereumAddress/:accountIndex", getAccount)
server.GET("/exits", getExits)
server.GET("/exits/:batchNum/:accountIndex", getExit)
// Transaction
server.GET("/transactions-history", getHistoryTxs)
server.GET("/transactions-history/:id", getHistoryTx)
// Status
server.GET("/batches", getBatches)
server.GET("/batches/:batchNum", getBatch)
server.GET("/full-batches/:batchNum", getFullBatch)
server.GET("/slots", getSlots)
server.GET("/slots/:slotNum", getSlot)
server.GET("/bids", getBids)
server.GET("/next-forgers", getNextForgers)
server.GET("/state", getState)
server.GET("/config", getConfig)
server.GET("/tokens", getTokens)
server.GET("/tokens/:id", getToken)
server.GET("/recommendedFee", getRecommendedFee)
server.GET("/coordinators", getCoordinators)
server.GET("/coordinators/:bidderAddr", getCoordinator)
}
return nil
}