From d04ce18eb0aa5c5be38b554d856142989ea7d25a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Mon, 24 Jul 2023 18:34:56 +0200 Subject: [PATCH] v0.0.202 --- ginext/engine.go | 44 +++++++++++++++++++++++++++++++++++++------- goextVersion.go | 4 ++-- 2 files changed, 39 insertions(+), 9 deletions(-) diff --git a/ginext/engine.go b/ginext/engine.go index 9447eb6..ac33c30 100644 --- a/ginext/engine.go +++ b/ginext/engine.go @@ -3,8 +3,10 @@ package ginext import ( "fmt" "github.com/gin-gonic/gin" + "github.com/rs/zerolog/log" "gogs.mikescher.com/BlackForestBytes/goext/langext" "gogs.mikescher.com/BlackForestBytes/goext/mathext" + "net" "net/http" "strings" "time" @@ -65,16 +67,44 @@ func NewEngine(allowCors bool, ginDebug bool, timeout time.Duration) *GinWrapper return wrapper } -func (w *GinWrapper) ServeHTTP(writer http.ResponseWriter, request *http.Request) { - - if w.ginDebug { - w.debugPrintRoutes() +func (w *GinWrapper) ListenAndServeHTTP(addr string, postInit func(port string)) (chan error, *http.Server) { + httpserver := &http.Server{ + Addr: addr, + Handler: w.engine, } - w.engine.ServeHTTP(writer, request) + errChan := make(chan error) + + go func() { + + ln, err := net.Listen("tcp", httpserver.Addr) + if err != nil { + errChan <- err + return + } + + _, port, err := net.SplitHostPort(ln.Addr().String()) + if err != nil { + errChan <- err + return + } + + log.Info().Str("address", httpserver.Addr).Msg("HTTP-Server started on http://localhost:" + port) + + if postInit != nil { + postInit(port) + } + + errChan <- httpserver.Serve(ln) + }() + + return errChan, httpserver } -func (w *GinWrapper) debugPrintRoutes() { +func (w *GinWrapper) DebugPrintRoutes() { + if !w.ginDebug { + return + } lines := make([][4]string, 0) @@ -99,7 +129,7 @@ func (w *GinWrapper) debugPrintRoutes() { for _, line := range lines { - fmt.Printf("Gin-Route: [%s] @ %s --> %s --> %s", + fmt.Printf("Gin-Route: [%s] @ %s --> %s --> %s\n", langext.StrPadRight(line[0], " ", pad[0]), langext.StrPadRight(line[1], " ", pad[1]), langext.StrPadRight(line[2], " ", pad[2]), diff --git a/goextVersion.go b/goextVersion.go index a92d9d5..bbc835e 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.201" +const GoextVersion = "0.0.202" -const GoextVersionTimestamp = "2023-07-24T18:22:36+0200" +const GoextVersionTimestamp = "2023-07-24T18:34:56+0200"