forked from iotaledger/goshimmer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
allmana.go
44 lines (40 loc) · 1.19 KB
/
allmana.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package mana
import (
"net/http"
"sort"
"time"
"github.com/labstack/echo"
"github.com/izuc/zipp/packages/app/jsonmodels"
"github.com/izuc/zipp/packages/core/mana"
manaPlugin "github.com/izuc/zipp/plugins/blocklayer"
)
// getAllManaHandler handles the request.
func getAllManaHandler(c echo.Context) error {
t := time.Now()
access, tAccess, err := manaPlugin.GetManaMap(mana.AccessMana, t)
if err != nil {
return c.JSON(http.StatusBadRequest, jsonmodels.GetAllManaResponse{
Error: err.Error(),
})
}
accessList := access.ToNodeStrList()
sort.Slice(accessList, func(i, j int) bool {
return accessList[i].Mana > accessList[j].Mana
})
consensus, tConsensus, err := manaPlugin.GetManaMap(mana.ConsensusMana, t)
if err != nil {
return c.JSON(http.StatusBadRequest, jsonmodels.GetAllManaResponse{
Error: err.Error(),
})
}
consensusList := consensus.ToNodeStrList()
sort.Slice(consensusList, func(i, j int) bool {
return consensusList[i].Mana > consensusList[j].Mana
})
return c.JSON(http.StatusOK, jsonmodels.GetAllManaResponse{
Access: accessList,
AccessTimestamp: tAccess.Unix(),
Consensus: consensusList,
ConsensusTimestamp: tConsensus.Unix(),
})
}