123456789101112131415161718192021222324252627 |
- package parser
- import "github.com/0xJacky/Nginx-UI/internal/geolite"
- // GeoLiteAdapter adapts the geolite.Service to the parser.GeoIPService interface.
- type GeoLiteAdapter struct {
- geoService *geolite.Service
- }
- // NewGeoLiteAdapter creates a new adapter.
- func NewGeoLiteAdapter(service *geolite.Service) *GeoLiteAdapter {
- return &GeoLiteAdapter{geoService: service}
- }
- // Search performs a geo IP lookup and converts the result to the parser's GeoLocation type.
- func (a *GeoLiteAdapter) Search(ip string) (*GeoLocation, error) {
- location, err := a.geoService.Search(ip)
- if err != nil || location == nil {
- return nil, err // No error, but no location found, or an actual error occurred.
- }
- return &GeoLocation{
- RegionCode: location.RegionCode,
- Province: location.Province,
- City: location.City,
- }, nil
- }
|