123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package cmd
- import (
- "net/http"
- "github.com/labstack/echo/v4"
- "github.com/mudler/edgevpn/pkg/blockchain"
- "github.com/mudler/edgevpn/pkg/edgevpn"
- "github.com/urfave/cli"
- "go.uber.org/zap"
- )
- func API(l *zap.Logger) cli.Command {
- return cli.Command{
- Name: "api",
- Description: "api starts an http server to display network informations",
- Flags: append(CommonFlags,
- &cli.StringFlag{
- Name: "listen",
- Value: ":8080",
- },
- ),
- Action: func(c *cli.Context) error {
- e := edgevpn.New(cliToOpts(l, c)...)
- mw, err := e.MessageWriter()
- if err != nil {
- return err
- }
- ledger := blockchain.New(mw, 1000)
- // Join the node to the network, using our ledger
- if err := e.Join(ledger); err != nil {
- return err
- }
- ec := echo.New()
- ec.GET("/api/data", func(c echo.Context) error {
- return c.JSON(http.StatusOK, ledger.CurrentData())
- })
- ec.GET("/api/blockchain", func(c echo.Context) error {
- return c.JSON(http.StatusOK, ledger.BlockChain())
- })
- return ec.Start(c.String("listen"))
- },
- }
- }
|