upstream sync
This commit is contained in:
33
services/location/location_service.go
Normal file
33
services/location/location_service.go
Normal file
@@ -0,0 +1,33 @@
|
||||
package location
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"gitlab.com/pactual1/backend/models"
|
||||
"gitlab.com/pactual1/backend/services/location/mapbox_lib"
|
||||
)
|
||||
|
||||
type service struct {
|
||||
accessToken string
|
||||
}
|
||||
|
||||
type Service interface {
|
||||
SearchPlace(context.Context, string) ([]*models.Place, error)
|
||||
}
|
||||
|
||||
func NewService(accessToken string) Service {
|
||||
return service{accessToken: accessToken}
|
||||
}
|
||||
|
||||
func (s service) SearchPlace(ctx context.Context, query string) ([]*models.Place, error) {
|
||||
geocoder := mapbox.NewFastHttpGeocoder(mapbox.AccessToken(s.accessToken))
|
||||
resp, err := geocoder.ForwardGeocode(ctx, &mapbox.ForwardGeocodeRequest{SearchText: query})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
var places []*models.Place
|
||||
for _, feature := range resp.Features {
|
||||
places = append(places, &models.Place{Text: feature.Text, Coordinates: feature.Geometry.Coordinates})
|
||||
}
|
||||
return places, nil
|
||||
}
|
||||
Reference in New Issue
Block a user