diff --git a/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient.hs b/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient.hs index ef8890b9a..8ae4f3e44 100644 --- a/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient.hs +++ b/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient.hs @@ -56,6 +56,7 @@ type AutocompleteAPI = :> MandatoryQueryParam "radius" Integer :> MandatoryQueryParam "components" Text :> MandatoryQueryParam "language" Language + :> QueryParam "origin" LatLong :> Get '[JSON] GoogleMaps.AutoCompleteResp type PlaceDetailsAPI = @@ -95,7 +96,7 @@ type DirectionsAPI = :> QueryParam "avoid" Text :> Get '[JSON] GoogleMaps.DirectionsResp -autoCompleteClient :: Maybe Text -> Text -> Text -> Text -> Integer -> Text -> Language -> EulerClient GoogleMaps.AutoCompleteResp +autoCompleteClient :: Maybe Text -> Text -> Text -> Text -> Integer -> Text -> Language -> Maybe LatLong -> EulerClient GoogleMaps.AutoCompleteResp getPlaceDetailsClient :: Maybe Text -> Text -> Text -> Text -> EulerClient GoogleMaps.GetPlaceDetailsResp getPlaceNameClient :: Maybe Text -> Text -> Maybe LatLong -> Maybe Text -> Maybe Language -> EulerClient GoogleMaps.GetPlaceNameResp distanceMatrixClient :: @@ -128,9 +129,10 @@ autoComplete :: Integer -> Text -> Language -> + Maybe LatLong -> m GoogleMaps.AutoCompleteResp -autoComplete url apiKey input sessiontoken location radius components lang = do - callAPI url (autoCompleteClient sessiontoken apiKey input location radius components lang) "autoComplete" (Proxy :: Proxy GoogleMapsAPI) +autoComplete url apiKey input sessiontoken location radius components lang origin = do + callAPI url (autoCompleteClient sessiontoken apiKey input location radius components lang origin) "autoComplete" >>= checkGoogleMapsError url getPlaceDetails :: diff --git a/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient/Types.hs b/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient/Types.hs index 52efc4ac0..66fb8e4c0 100644 --- a/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient/Types.hs +++ b/lib/mobility-core/src/Kernel/External/Maps/Google/MapsClient/Types.hs @@ -32,7 +32,8 @@ data AutoCompleteResp = AutoCompleteResp data Prediction = Prediction { description :: Text, - place_id :: Maybe Text + place_id :: Maybe Text, + distance_meters :: Maybe Int } deriving (Generic, ToJSON, FromJSON, ToSchema) diff --git a/lib/mobility-core/src/Kernel/External/Maps/Interface/Google.hs b/lib/mobility-core/src/Kernel/External/Maps/Interface/Google.hs index e769ce664..80f38b035 100644 --- a/lib/mobility-core/src/Kernel/External/Maps/Interface/Google.hs +++ b/lib/mobility-core/src/Kernel/External/Maps/Interface/Google.hs @@ -250,8 +250,8 @@ autoComplete cfg AutoCompleteReq {..} = do let mapsUrl = cfg.googleMapsUrl key <- decrypt cfg.googleKey let components = "country:in" - res <- GoogleMaps.autoComplete mapsUrl key input sessionToken location radius components language - let predictions = map (\GoogleMaps.Prediction {..} -> Prediction {placeId = place_id, ..}) res.predictions + res <- GoogleMaps.autoComplete mapsUrl key input sessionToken location radius components language origin + let predictions = map (\GoogleMaps.Prediction {..} -> Prediction {placeId = place_id, distance = distance_meters, ..}) res.predictions return $ AutoCompleteResp predictions getPlaceDetails :: diff --git a/lib/mobility-core/src/Kernel/External/Maps/Interface/MMI.hs b/lib/mobility-core/src/Kernel/External/Maps/Interface/MMI.hs index 4e5a79690..6dd5091a2 100644 --- a/lib/mobility-core/src/Kernel/External/Maps/Interface/MMI.hs +++ b/lib/mobility-core/src/Kernel/External/Maps/Interface/MMI.hs @@ -70,7 +70,7 @@ autoSuggest mmiCfg AutoCompleteReq {..} = do mapsUrl = mmiCfg.mmiNonKeyUrl token <- MMIAuthToken.getTokenText mmiCfg res <- MMI.mmiAutoSuggest mapsUrl (Just $ MMITypes.MMIAuthToken token) query loc region lang - let predictions = map (\MMITypes.SuggestedLocations {..} -> Prediction {placeId = Just eLoc, description = placeName <> " " <> placeAddress}) res.suggestedLocations + let predictions = map (\MMITypes.SuggestedLocations {..} -> Prediction {placeId = Just eLoc, description = placeName <> " " <> placeAddress, distance = Nothing}) res.suggestedLocations return $ AutoCompleteResp predictions getDistanceMatrix :: diff --git a/lib/mobility-core/src/Kernel/External/Maps/Interface/Types.hs b/lib/mobility-core/src/Kernel/External/Maps/Interface/Types.hs index 7ec4fbd67..6b3851b6c 100644 --- a/lib/mobility-core/src/Kernel/External/Maps/Interface/Types.hs +++ b/lib/mobility-core/src/Kernel/External/Maps/Interface/Types.hs @@ -144,7 +144,8 @@ newtype AutoCompleteResp = AutoCompleteResp data Prediction = Prediction { description :: Text, - placeId :: Maybe Text + placeId :: Maybe Text, + distance :: Maybe Int } deriving (Generic, ToJSON, FromJSON, ToSchema)