sonarqube-badges/router/server.go
2025-03-15 01:49:52 +01:00

53 lines
1.1 KiB
Go

package router
import (
"context"
"fmt"
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"net"
"net/http"
"sonarqube-badge/config"
"sonarqube-badge/router/api"
"sonarqube-badge/router/views"
)
func StartServer(ctx context.Context) {
r := mux.NewRouter()
// API ROUTES
api.ProjectRouter(r.PathPrefix("/api/project").Subrouter())
api.LoginRouter(r.PathPrefix("/api/login").Subrouter())
api.UserRouter(r.PathPrefix("/api/user").Subrouter())
// VIEW ROUTES
views.IndexRouter(r)
views.LoginRouter(r)
views.ProjectRouter(r)
views.BadgeRouter(r)
views.UserRouter(r)
credentials := handlers.AllowCredentials()
methods := handlers.AllowedMethods([]string{"POST", "GET", "DELETE"})
ttl := handlers.MaxAge(3600)
port := ctx.Value("config").(config.Config).Port
if port == 0 {
port = 8080
}
fmt.Printf("Starting server on http://localhost:%d ...", port)
server := http.Server{
Addr: fmt.Sprintf(":%d", port),
BaseContext: func(listener net.Listener) context.Context {
return ctx
},
Handler: handlers.CORS(credentials, methods, ttl)(r),
}
err := server.ListenAndServe()
if err != nil {
panic(err)
}
}