mirror of
https://github.com/c9s/bbgo.git
synced 2024-11-10 09:11:55 +00:00
add setup struct for setup mode options
This commit is contained in:
parent
7b7bcf56c9
commit
6db1924f87
|
@ -68,10 +68,14 @@ func runSetup(baseCtx context.Context, userConfig *bbgo.Config, enableApiServer
|
||||||
if enableApiServer {
|
if enableApiServer {
|
||||||
go func() {
|
go func() {
|
||||||
s := &server.Server{
|
s := &server.Server{
|
||||||
Config: userConfig,
|
Config: userConfig,
|
||||||
Environ: environ,
|
Environ: environ,
|
||||||
Trader: trader,
|
Trader: trader,
|
||||||
Setup: true,
|
Setup: &server.Setup{
|
||||||
|
Context: ctx,
|
||||||
|
Cancel: cancelTrading,
|
||||||
|
Token: "",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := s.Run(ctx); err != nil {
|
if err := s.Run(ctx); err != nil {
|
||||||
|
@ -82,7 +86,7 @@ func runSetup(baseCtx context.Context, userConfig *bbgo.Config, enableApiServer
|
||||||
if false && runtime.GOOS == "darwin" {
|
if false && runtime.GOOS == "darwin" {
|
||||||
<-time.After(time.Second * 3)
|
<-time.After(time.Second * 3)
|
||||||
cmd := exec.Command("open", "http://localhost:8080/setup")
|
cmd := exec.Command("open", "http://localhost:8080/setup")
|
||||||
if err := cmd.Start() ; err != nil {
|
if err := cmd.Start(); err != nil {
|
||||||
log.WithError(err).Errorf("can not call open command to open the web page")
|
log.WithError(err).Errorf("can not call open command to open the web page")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -275,10 +279,9 @@ func runConfig(basectx context.Context, userConfig *bbgo.Config, enableApiServer
|
||||||
if enableApiServer {
|
if enableApiServer {
|
||||||
go func() {
|
go func() {
|
||||||
s := &server.Server{
|
s := &server.Server{
|
||||||
Config: userConfig,
|
Config: userConfig,
|
||||||
Environ: environ,
|
Environ: environ,
|
||||||
Trader: trader,
|
Trader: trader,
|
||||||
Setup: false,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := s.Run(ctx); err != nil {
|
if err := s.Run(ctx); err != nil {
|
||||||
|
|
|
@ -22,17 +22,28 @@ import (
|
||||||
"github.com/c9s/bbgo/pkg/types"
|
"github.com/c9s/bbgo/pkg/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Setup struct {
|
||||||
|
// Context is the trader context
|
||||||
|
Context context.Context
|
||||||
|
|
||||||
|
// Cancel is the trader context cancel function you want to cancel
|
||||||
|
Cancel context.CancelFunc
|
||||||
|
|
||||||
|
// Token is used for setup api authentication
|
||||||
|
Token string
|
||||||
|
}
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
Config *bbgo.Config
|
Config *bbgo.Config
|
||||||
Environ *bbgo.Environment
|
Environ *bbgo.Environment
|
||||||
Trader *bbgo.Trader
|
Trader *bbgo.Trader
|
||||||
Setup bool
|
Setup *Setup
|
||||||
|
Bind string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Run(ctx context.Context) error {
|
func (s *Server) Run(ctx context.Context) error {
|
||||||
userConfig := s.Config
|
userConfig := s.Config
|
||||||
environ := s.Environ
|
environ := s.Environ
|
||||||
setup := s.Setup
|
|
||||||
|
|
||||||
r := gin.Default()
|
r := gin.Default()
|
||||||
r.Use(cors.New(cors.Config{
|
r.Use(cors.New(cors.Config{
|
||||||
|
@ -49,7 +60,7 @@ func (s *Server) Run(ctx context.Context) error {
|
||||||
c.JSON(http.StatusOK, gin.H{"message": "pong"})
|
c.JSON(http.StatusOK, gin.H{"message": "pong"})
|
||||||
})
|
})
|
||||||
|
|
||||||
if setup {
|
if s.Setup != nil {
|
||||||
r.POST("/api/setup/test-db", func(c *gin.Context) {
|
r.POST("/api/setup/test-db", func(c *gin.Context) {
|
||||||
payload := struct {
|
payload := struct {
|
||||||
DSN string `json:"dsn"`
|
DSN string `json:"dsn"`
|
||||||
|
@ -196,7 +207,7 @@ func (s *Server) Run(ctx context.Context) error {
|
||||||
|
|
||||||
r.GET("/api/trades", func(c *gin.Context) {
|
r.GET("/api/trades", func(c *gin.Context) {
|
||||||
if environ.TradeService == nil {
|
if environ.TradeService == nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": "database is not configured" })
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "database is not configured"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -229,7 +240,7 @@ func (s *Server) Run(ctx context.Context) error {
|
||||||
|
|
||||||
r.GET("/api/orders/closed", func(c *gin.Context) {
|
r.GET("/api/orders/closed", func(c *gin.Context) {
|
||||||
if environ.OrderService == nil {
|
if environ.OrderService == nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": "database is not configured" })
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "database is not configured"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,7 +274,7 @@ func (s *Server) Run(ctx context.Context) error {
|
||||||
|
|
||||||
r.GET("/api/trading-volume", func(c *gin.Context) {
|
r.GET("/api/trading-volume", func(c *gin.Context) {
|
||||||
if environ.TradeService == nil {
|
if environ.TradeService == nil {
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{ "error": "database is not configured" })
|
c.JSON(http.StatusInternalServerError, gin.H{"error": "database is not configured"})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,6 +533,10 @@ func (s *Server) Run(ctx context.Context) error {
|
||||||
r.GET("/api/strategies/single", s.listStrategies)
|
r.GET("/api/strategies/single", s.listStrategies)
|
||||||
r.NoRoute(s.pkgerHandler)
|
r.NoRoute(s.pkgerHandler)
|
||||||
|
|
||||||
|
if len(s.Bind) > 0 {
|
||||||
|
return r.Run(s.Bind)
|
||||||
|
}
|
||||||
|
|
||||||
return r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
|
return r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -547,7 +562,6 @@ func (s *Server) listStrategies(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var pageRoutePattern = regexp.MustCompile("/[a-z]+$")
|
var pageRoutePattern = regexp.MustCompile("/[a-z]+$")
|
||||||
|
|
||||||
func (s *Server) pkgerHandler(c *gin.Context) {
|
func (s *Server) pkgerHandler(c *gin.Context) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user