| | 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) |
| | } |
| | } |
| |
|