| package main |
|
|
| import ( |
| "fmt" |
| "log" |
|
|
| |
| |
| |
|
|
| "os" |
| "os/signal" |
| "syscall" |
|
|
| "github.com/joho/godotenv" |
| "github.com/gofiber/fiber/v2" |
| "github.com/gofiber/template/html/v2" |
| "github.com/gofiber/fiber/v2/middleware/helmet" |
|
|
| helpers "thesis_forecasting_website/helpers" |
| handlers "thesis_forecasting_website/handlers" |
| middlewares "thesis_forecasting_website/middlewares" |
| ) |
|
|
| func main() { |
| _ = godotenv.Load() |
|
|
| frontend_engine := html.New("./views", ".html") |
| frontend_engine.AddFunc("toJSON", helpers.ToJSON) |
|
|
| forecasting_service := fiber.New(fiber.Config{ |
| Views: frontend_engine, |
| }) |
|
|
| forecasting_service.Use(middlewares.LoggingMiddleware) |
| forecasting_service.Use(helmet.New()) |
| forecasting_service.Use(middlewares.NoCacheMiddleware) |
|
|
| forecasting_service.Static("/public", "./public_dist") |
|
|
| forecasting_service.Get("/", handlers.IssuerHandler) |
| forecasting_service.Get("/infographic", handlers.InfographicHandler) |
| forecasting_service.Post("/prediction", handlers.InferenceHandler) |
|
|
| host := os.Getenv("FORECASTING_SERVICE_HOST") |
| port := os.Getenv("FORECASTING_SERVICE_PORT") |
|
|
| go func() { |
| if err := forecasting_service.Listen(fmt.Sprintf("%s:%s", host, port)) |
| err != nil { |
| log.Fatalf("server error: %v", err) |
| } |
| }() |
|
|
| |
| |
| |
| |
| |
| |
| |
|
|
| quit := make(chan os.Signal, 1) |
| signal.Notify(quit, os.Interrupt, syscall.SIGTERM) |
| <-quit |
|
|
| log.Println("shutting down gracefully...") |
| if err := forecasting_service.Shutdown() |
| err != nil { |
| log.Fatalf("error shutting down: %v", err) |
| } |
| } |
|
|