package geo import ( "io" "net/http" "github.com/paulmach/orb/geojson" "github.com/rs/zerolog/log" ) type GeoService struct { geoType string baseURL string autocompleteURL string } func NewGeoService(geoType, baseURL, autocompleteEndpoint string) *GeoService { return &GeoService{ geoType: geoType, baseURL: baseURL, autocompleteURL: baseURL + autocompleteEndpoint, } } func (s *GeoService) Autocomplete(text string) (*geojson.FeatureCollection, error) { resp, err := http.Get(s.autocompleteURL + text) if err != nil { return nil, err } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { log.Error().Err(err).Msg("Failed to read response body") return nil, err } featureCollection, err := geojson.UnmarshalFeatureCollection(body) if err != nil { log.Error().Err(err).Msg("Failed to unmarshal feature collection") return nil, err } return featureCollection, nil }