65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package infrastructure
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type Server struct {
|
|
addr string
|
|
http.Server
|
|
port int
|
|
}
|
|
|
|
var (
|
|
env = os.Getenv("HTMX_APP_ENV")
|
|
)
|
|
|
|
func NewServer() *Server {
|
|
const (
|
|
addr = "0.0.0.0"
|
|
)
|
|
|
|
var port int
|
|
|
|
if env == "production" {
|
|
port = 8080
|
|
} else {
|
|
port = 8080
|
|
}
|
|
|
|
return &Server{
|
|
addr,
|
|
http.Server{
|
|
Addr: addr + ":" + strconv.Itoa(port),
|
|
Handler: GetRouter(),
|
|
DisableGeneralOptionsHandler: false,
|
|
TLSConfig: nil,
|
|
ReadTimeout: 5 * time.Second,
|
|
ReadHeaderTimeout: 0,
|
|
WriteTimeout: 5 * time.Second,
|
|
IdleTimeout: 0,
|
|
MaxHeaderBytes: 0,
|
|
TLSNextProto: nil,
|
|
ConnState: nil,
|
|
ErrorLog: nil,
|
|
BaseContext: nil,
|
|
ConnContext: nil,
|
|
},
|
|
port,
|
|
}
|
|
}
|
|
|
|
func (s *Server) Serve() {
|
|
fmt.Printf("Starting.\nListening at %s on port %s\n", s.addr, strconv.Itoa(s.port))
|
|
serverError := s.ListenAndServe()
|
|
|
|
if serverError != nil {
|
|
log.Fatal(serverError)
|
|
}
|
|
}
|