Files
link-shortener/internal/http/server.go
Giovanni Rezcjikov 8befcc11c1
Some checks failed
continuous-integration/drone/push Build is failing
feat: increased security
2026-02-21 21:05:47 +03:00

48 lines
863 B
Go

package http
import (
"fmt"
"net/http"
"example.com/m/internal/handlers"
"example.com/m/internal/middleware"
"github.com/gin-gonic/gin"
)
type Server struct {
address string
engine *gin.Engine
linksHandler *handlers.LinksHandler
}
func NewServer(address string, lh *handlers.LinksHandler) *Server {
engine := gin.New()
engine.Use(gin.Logger())
engine.Use(gin.Recovery())
engine.Use(middleware.SecurityHeaders())
rl := middleware.NewRateLimiter(10, 20)
engine.Use(rl.Middleware())
return &Server{
address: address,
engine: engine,
linksHandler: lh,
}
}
func (s *Server) Start() error {
s.routes()
fmt.Printf("starting server on %s\n", s.address)
if err := s.engine.Run(s.address); err != nil && err != http.ErrServerClosed {
return fmt.Errorf("error occurred while starting the server: %w", err)
}
return nil
}