go-faker/api/server.go

43 lines
775 B
Go
Raw Normal View History

package api
import (
"log"
"net/http"
"os"
"os/signal"
"syscall"
)
type Server struct {
addr string
mux *http.ServeMux
}
func NewServer(addr string) *Server {
mux := http.NewServeMux()
return &Server{addr: addr, mux: mux}
}
func (s *Server) Start() error {
handler := NewHandler("default-seed")
handler.RegisterRoutes(s.mux)
server := &http.Server{
Addr: s.addr,
Handler: s.mux,
}
go func() {
log.Printf("Go-Faker API server starting on %s", s.addr)
if err := server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("Server failed: %v", err)
}
}()
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
log.Println("Shutting down server...")
return server.Close()
}