From 423e5502a7d9f273bd7600e9e9d02191e5befae0 Mon Sep 17 00:00:00 2001 From: Vargha Csongor Date: Sun, 14 Apr 2024 11:16:34 +0200 Subject: [PATCH] Create http server setup utility --- utilities/server_setup.go | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 utilities/server_setup.go diff --git a/utilities/server_setup.go b/utilities/server_setup.go new file mode 100644 index 0000000..7107641 --- /dev/null +++ b/utilities/server_setup.go @@ -0,0 +1,40 @@ +package utilities + +import ( + "errors" + "log" + "net/http" + "time" +) + +func SetupHttpsServer(router http.Handler, cert, key, httpsPort, httpPort string, requestTimeout time.Duration) (server *http.Server) { + if FileExists(cert) && FileExists(key) { + server = &http.Server{ + Addr: httpsPort, + Handler: router, + ReadTimeout: 5 * time.Second, + WriteTimeout: 10 * time.Second, + } + go func() { + log.Println("Server starts at port ", httpsPort) + if err := server.ListenAndServeTLS(cert, key); err != nil && errors.Is(err, http.ErrServerClosed) { + log.Fatal(err) + } + }() + } else { + server = &http.Server{ + Addr: httpPort, + Handler: router, + ReadTimeout: requestTimeout * time.Second, + WriteTimeout: requestTimeout * time.Second, + } + go func() { + log.Println("Server starts at port ", httpPort) + if err := server.ListenAndServe(); err != nil && errors.Is(err, http.ErrServerClosed) { + log.Fatal(err) + } + }() + } + + return server +}