wormhole-explorer/fly/server/server.go

50 lines
1.2 KiB
Go
Raw Normal View History

package server
import (
"os"
"github.com/gofiber/fiber/v2"
fiberLog "github.com/gofiber/fiber/v2/middleware/logger"
"github.com/wormhole-foundation/wormhole-explorer/fly/internal/sqs"
"github.com/wormhole-foundation/wormhole-explorer/fly/storage"
"go.uber.org/zap"
)
type Server struct {
app *fiber.App
port string
logger *zap.Logger
}
func NewServer(logger *zap.Logger, repository *storage.Repository, consumer *sqs.Consumer, isLocal bool) *Server {
port := os.Getenv("API_PORT")
if port == "" {
logger.Fatal("You must set your 'API_PORT' environmental variable")
}
ctrl := NewController(repository, consumer, isLocal)
app := fiber.New()
app.Use(fiberLog.New(fiberLog.Config{
Format: "level=info timestamp=${time} method=${method} path=${path} status${status} request_id=${locals:requestid}\n",
}))
api := app.Group("/api")
api.Get("/health", ctrl.HealthCheck)
api.Get("/ready", ctrl.ReadyCheck)
return &Server{
app: app,
port: port,
logger: logger,
}
}
// Start listen serves HTTP requests from addr.
func (s *Server) Start() {
go func() {
s.app.Listen(":" + s.port)
}()
}
// Stop gracefull server.
func (s *Server) Stop() {
_ = s.app.Shutdown()
}