package bbgo import ( "context" "fmt" "net/http" "github.com/gin-gonic/gin" ) func RunServer(ctx context.Context, userConfig *Config, environ *Environment) error { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"message": "pong"}) }) r.GET("/sessions", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"sessions": userConfig.Sessions}) }) r.GET("/sessions/:session", func(c *gin.Context) { sessionName := c.Param("session") session, ok := environ.Session(sessionName) if !ok { c.JSON(http.StatusNotFound, gin.H{"error": fmt.Sprintf("session %s not found", sessionName)}) return } c.JSON(http.StatusOK, gin.H{"session": session}) }) r.GET("/sessions/:session/trades", func(c *gin.Context) { sessionName := c.Param("session") session, ok := environ.Session(sessionName) if !ok { c.JSON(http.StatusNotFound, gin.H{"error": fmt.Sprintf("session %s not found", sessionName)}) return } c.JSON(http.StatusOK, gin.H{"trades": session.Trades}) }) r.GET("/sessions/:session/open-orders", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{"orders": []string{}}) }) r.GET("/sessions/:session/closed-orders", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) r.GET("/sessions/:session/loaded-symbols", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) r.GET("/sessions/:session/pnl", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) r.GET("/sessions/:session/market/:symbol/closed-orders", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) r.GET("/sessions/:session/market/:symbol/open-orders", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) r.GET("/sessions/:session/market/:symbol/trades", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) r.GET("/sessions/:session/market/:symbol/pnl", func(c *gin.Context) { c.JSON(200, gin.H{"message": "pong"}) }) return r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") }