70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
package http
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"gitea.urkob.com/urko/crono"
|
|
"gitea.urkob.com/urko/ess-etl-go/config"
|
|
"gitea.urkob.com/urko/ess-etl-go/internal/api/http/handler"
|
|
"gitea.urkob.com/urko/ess-etl-go/internal/services"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/middleware/cors"
|
|
)
|
|
|
|
type restServer struct {
|
|
app *fiber.App
|
|
cfg *config.Config
|
|
cr *crono.Crono
|
|
employeeWIHdl *handler.EmployeeWIHandler
|
|
amsEmployeeWIHdl *handler.AMSEmployeeWIHandler
|
|
}
|
|
|
|
func NewRestServer(cfg *config.Config, cr *crono.Crono) *restServer {
|
|
return &restServer{
|
|
cfg: cfg,
|
|
cr: cr,
|
|
}
|
|
}
|
|
|
|
func (s *restServer) WithEmployeeWIHandler(employeeWISrv services.EmployeeWIService) *restServer {
|
|
s.employeeWIHdl = handler.NewEmployeeWIHandler(employeeWISrv)
|
|
return s
|
|
}
|
|
|
|
func (s *restServer) WithAMSHandler() *restServer {
|
|
s.amsEmployeeWIHdl = handler.NewAMSEmployeeWIHandler(s.cfg.AmsApi, s.cfg.AmsApiKey)
|
|
return s
|
|
}
|
|
func (s *restServer) Start(apiPort, bearerToken string) error {
|
|
s.app = fiber.New()
|
|
|
|
s.app.Use(cors.New(cors.Config{
|
|
AllowMethods: "GET,POST,OPTIONS",
|
|
AllowOrigins: "*",
|
|
AllowHeaders: "Origin, Accept, Content-Type, X-CSRF-Token, Authorization",
|
|
ExposeHeaders: "Origin",
|
|
}))
|
|
|
|
s.app.Get("/employee_wi/:id", func(c *fiber.Ctx) error {
|
|
return s.employeeWIHdl.Get(c)
|
|
})
|
|
|
|
s.app.Get("/ams/employee_wi/:id", func(c *fiber.Ctx) error {
|
|
return s.amsEmployeeWIHdl.Get(c)
|
|
})
|
|
|
|
s.cr.MarkAndRestart("server up")
|
|
if err := s.app.Listen(":" + apiPort); err != nil {
|
|
return fmt.Errorf("app.Listen: %s", err)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *restServer) Shutdown() {
|
|
if err := s.app.Server().Shutdown(); err != nil {
|
|
log.Printf("app.Server().Shutdown(): %s\n", err)
|
|
}
|
|
}
|