pomme/cmd/pomme/main.go

54 lines
1.3 KiB
Go

package main
import (
"log"
"net/http"
"time"
_ "git.freecumextremist.com/grumbulon/pomme/docs"
"git.freecumextremist.com/grumbulon/pomme/frontend"
"git.freecumextremist.com/grumbulon/pomme/internal"
"git.freecumextremist.com/grumbulon/pomme/internal/api"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
httpSwagger "github.com/swaggo/http-swagger"
)
// @title Pomme
// @version 0.0.1
// @description Pomme is a service that parses zonefiles
// @termsOfService http://freecumextremist.com/
//
// @securityDefinitions.apikey Bearer
// @in header
// @name Authorization
// @description Type "Bearer" followed by a space and JWT token.
func main() {
config, err := internal.ReadConfig()
if err != nil {
panic(err)
}
pomme := chi.NewRouter()
pomme.Use(middleware.Logger)
pomme.Use(middleware.GetHead)
pomme.Use(middleware.Recoverer)
pomme.Mount("/", frontend.SvelteKitHandler("/"))
pomme.Mount("/api", api.API())
pomme.Mount("/swagger", httpSwagger.WrapHandler)
log.Println("\t-------------------------------------")
log.Println("\t\tRunning on port " + config.Port)
log.Println("\t-------------------------------------")
s := &http.Server{
ReadTimeout: 3 * time.Second,
WriteTimeout: 15 * time.Second,
Addr: ":" + config.Port,
Handler: pomme,
}
log.Fatal(s.ListenAndServe())
}