ipapi/internal/http/module.go
sneak 08ca75966e Fix dependency injection and implement proper CIDR checking
- Add http module for proper FX dependency injection
- Fix router to accept state manager parameter
- Implement proper CIDR-based checking for RFC1918 and documentation IPs
- Add reasonable timeouts (30s) for database downloads
- Update tests to download databases to temporary directories
- Add tests for multiple IP lookups and error cases
- All tests passing
2025-07-27 18:44:53 +02:00

35 lines
715 B
Go

package http
import (
"log/slog"
"git.eeqj.de/sneak/ipapi/internal/database"
"git.eeqj.de/sneak/ipapi/internal/state"
"github.com/go-chi/chi/v5"
"go.uber.org/fx"
)
// Module provides HTTP server functionality.
//
//nolint:gochecknoglobals // fx module pattern requires global
var Module = fx.Options(
fx.Provide(
NewRouter,
NewServer,
),
)
// RouterParams contains dependencies for NewRouter.
type RouterParams struct {
fx.In
Logger *slog.Logger
DB *database.Manager
State *state.Manager
}
// NewRouterWrapper wraps NewRouter to work with FX dependency injection.
func NewRouterWrapper(params RouterParams) (chi.Router, error) {
return NewRouter(params.Logger, params.DB, params.State)
}