/
server.go
86 lines (72 loc) · 2.12 KB
/
server.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package adminapi
import (
"context"
"github.com/Purnachndar/exnomy-scaffold-dex/backend/connection"
"github.com/Purnachndar/exnomy-scaffold-dex/backend/models"
"github.com/Purnachndar/exnomy-sdk-backend/common"
"github.com/Purnachndar/exnomy-sdk-backend/sdk/ethereum"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
"net/http"
"os"
"time"
)
var queueService common.IQueue
var healthCheckService IHealthCheckMonitor
var erc20Service ethereum.IErc20
func loadRoutes(e *echo.Echo) {
e.Add("GET", "/markets", ListMarketsHandler)
e.Add("POST", "/markets", CreateMarketHandler)
e.Add("POST", "/markets/approve", ApproveMarketHandler)
e.Add("PUT", "/markets", EditMarketHandler)
e.Add("DELETE", "/orders/:order_id", DeleteOrderHandler)
e.Add("GET", "/orders", GetOrdersHandler)
e.Add("GET", "/trades", GetTradesHandler)
e.Add("GET", "/balances", GetBalancesHandler)
e.Add("GET", "/status", GetStatusHandler)
e.Add("POST", "/restart_engine", RestartEngineHandler)
}
func newEchoServer() *echo.Echo {
e := echo.New()
e.HideBanner = true
e.Use(middleware.Logger())
e.Use(middleware.Recover())
e.Use(middleware.CORSWithConfig(middleware.CORSConfig{
AllowOrigins: []string{"*"},
AllowHeaders: []string{echo.HeaderOrigin, echo.HeaderContentType, echo.HeaderAccept},
}))
loadRoutes(e)
return e
}
func StartServer(ctx context.Context) {
//init database
models.Connect(os.Getenv("HSK_DATABASE_URL"))
//init health check service
healthCheckService = NewHealthCheckService(nil)
//init erc20 service
erc20Service = ethereum.NewErc20Service(nil)
//init event queue
queueService, _ = common.InitQueue(
&common.RedisQueueConfig{
Name: common.HYDRO_ENGINE_EVENTS_QUEUE_KEY,
Ctx: ctx,
Client: connection.NewRedisClient(os.Getenv("HSK_REDIS_URL")),
},
)
e := newEchoServer()
s := &http.Server{
Addr: ":3003",
ReadTimeout: 20 * time.Second,
WriteTimeout: 20 * time.Second,
}
go func() {
if err := e.StartServer(s); err != nil {
e.Logger.Info("shutting down the server: %v", err)
panic(err)
}
}()
<-ctx.Done()
if err := e.Shutdown(ctx); err != nil {
e.Logger.Fatal(err)
}
}