From 354ce0c08d8b8ab2a460a596ff01137ee680e85d Mon Sep 17 00:00:00 2001 From: eikendev Date: Fri, 31 Jul 2020 20:04:33 +0200 Subject: [PATCH] Add configuration for HTTP and debug mode --- app.go | 9 +++++++-- configuration/configuration.go | 5 +++++ router/router.go | 7 ++++++- runner/runner.go | 6 ++++-- 4 files changed, 22 insertions(+), 5 deletions(-) diff --git a/app.go b/app.go index 509b7e1..df83ca2 100644 --- a/app.go +++ b/app.go @@ -31,6 +31,10 @@ func main() { c := configuration.Get() + if c.Debug { + log.Printf("%+v\n", c) + } + cm := credentials.CreateManager(c.Crypto) db, err := database.Create(cm, c.Database.Dialect, c.Database.Connection) @@ -51,6 +55,7 @@ func main() { setupCleanup(db, dp) - engine := router.Create(db, dp) - runner.Run(engine) + engine := router.Create(c.Debug, db, dp) + + runner.Run(engine, c.HTTP.ListenAddress, c.HTTP.Port) } diff --git a/configuration/configuration.go b/configuration/configuration.go index ec14d07..d5fcaf2 100644 --- a/configuration/configuration.go +++ b/configuration/configuration.go @@ -20,6 +20,11 @@ type CryptoConfig struct { // Configuration holds values that can be configured by the user. type Configuration struct { + Debug bool `default:"false"` + HTTP struct { + ListenAddress string `default:""` + Port int `default:"8080"` + } Database struct { Dialect string `default:"sqlite3"` Connection string `default:"pushbits.db"` diff --git a/router/router.go b/router/router.go index ca8c866..c73e44f 100644 --- a/router/router.go +++ b/router/router.go @@ -13,9 +13,13 @@ import ( ) // Create a Gin engine and setup all routes. -func Create(db *database.Database, dp *dispatcher.Dispatcher) *gin.Engine { +func Create(debug bool, db *database.Database, dp *dispatcher.Dispatcher) *gin.Engine { log.Println("Setting up HTTP routes.") + if !debug { + gin.SetMode(gin.ReleaseMode) + } + auth := authentication.Authenticator{DB: db} applicationHandler := api.ApplicationHandler{DB: db, Dispatcher: dp} @@ -23,6 +27,7 @@ func Create(db *database.Database, dp *dispatcher.Dispatcher) *gin.Engine { userHandler := api.UserHandler{DB: db, Dispatcher: dp} r := gin.Default() + r.Use(location.Default()) applicationGroup := r.Group("/application") diff --git a/runner/runner.go b/runner/runner.go index b34a6f0..2043179 100644 --- a/runner/runner.go +++ b/runner/runner.go @@ -1,10 +1,12 @@ package runner import ( + "fmt" + "github.com/gin-gonic/gin" ) // Run starts the Gin engine. -func Run(engine *gin.Engine) { - engine.Run(":8080") +func Run(engine *gin.Engine, address string, port int) { + engine.Run(fmt.Sprintf("%s:%d", address, port)) }