Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions lib/mobility-core/src/Kernel/External/Maps/HasCoordinates.hs
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,17 @@ getCoordinatessDefault loc = Types.LatLong loc.lat loc.lon

instance HasCoordinates Types.LatLong where
getCoordinates = identity

class HasDriverId a where
getDriverId :: a -> Maybe Text
default getDriverId :: (HasField "driverId" a (Maybe Text)) => a -> Maybe Text
getDriverId = getDriverIdDefault

getCoordinatesAndDriverId :: (HasCoordinates a, HasDriverId a) => a -> Text
getCoordinatesAndDriverId req = show (getCoordinates req) <> "|" <> fromMaybe "unknown" (getDriverId req)

getDriverIdDefault :: (HasField "driverId" a (Maybe Text)) => a -> Maybe Text
getDriverIdDefault req = req.driverId

instance HasDriverId Types.LatLong where
getDriverId = const Nothing
4 changes: 3 additions & 1 deletion lib/mobility-core/src/Kernel/External/Maps/Interface.hs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ where

import EulerHS.Prelude ((...))
import Kernel.External.Maps.Google.Config as Reexport
import Kernel.External.Maps.HasCoordinates as Reexport (HasCoordinates (..))
import Kernel.External.Maps.HasCoordinates as Reexport (HasCoordinates (..), HasDriverId (..))
import qualified Kernel.External.Maps.Interface.Google as Google
import qualified Kernel.External.Maps.Interface.MMI as MMI
import qualified Kernel.External.Maps.Interface.NextBillion as NextBillion
Expand All @@ -56,6 +56,7 @@ getDistance ::
CoreMetrics m,
HasCoordinates a,
HasCoordinates b,
HasDriverId a,
ToJSON a,
ToJSON b,
HasKafkaProducer r
Expand Down Expand Up @@ -97,6 +98,7 @@ getDistances ::
CoreMetrics m,
HasCoordinates a,
HasCoordinates b,
HasDriverId a,
ToJSON a,
ToJSON b,
HasKafkaProducer r
Expand Down
3 changes: 2 additions & 1 deletion lib/mobility-core/src/Kernel/External/Maps/Interface/OSRM.hs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import qualified Data.List.NonEmpty as NE
import GHC.Float (double2Int)
import Kernel.External.Maps.Google.Config as Reexport
import Kernel.External.Maps.Google.PolyLinePoints
import Kernel.External.Maps.HasCoordinates as Reexport (HasCoordinates (..))
import Kernel.External.Maps.HasCoordinates as Reexport (HasCoordinates (..), HasDriverId (..))
import Kernel.External.Maps.Interface.Types
import Kernel.External.Maps.OSRM.Config
import Kernel.External.Maps.OSRM.RoadsClient
Expand Down Expand Up @@ -65,6 +65,7 @@ getDistances ::
MonadFlow m,
HasCoordinates a,
HasCoordinates b,
HasDriverId a,
ToJSON a,
ToJSON b,
MonadReader r m,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import qualified Data.Text as T
import qualified Data.Vector as V
import EulerHS.Prelude ((...))
import qualified EulerHS.Types as Euler
import Kernel.External.Maps.HasCoordinates
import qualified Kernel.External.Maps.Interface.Types as Maps
import qualified Kernel.External.Maps.Interface.Types as MapsInterfaceTypes
import qualified Kernel.External.Maps.Types as Maps
Expand Down Expand Up @@ -267,7 +268,10 @@ callOsrmGetDistancesAPI ::
MonadReader r m,
HasKafkaProducer r,
ToJSON a,
ToJSON b
ToJSON b,
HasDriverId a,
HasCoordinates a,
HasCoordinates b
) =>
Maybe Text ->
MapsInterfaceTypes.GetDistancesReq a b ->
Expand All @@ -285,7 +289,7 @@ callOsrmGetDistancesAPI entityId req osrmUrl travelMode pointsList sourcesList d
updatedReq = updateModeForGetDistancesReq travelMode req
rsp <- callAPI osrmUrl (eulerClient profile pointsList "distance,duration" sourcesList destinationsList mbSourceDestinationMapping) "osrm-table" (Proxy @TableAPI)
fork ("Logging external API Call of OsrmGetDistancesAPI OSRM ") $
ApiCallLogger.pushExternalApiCallDataToKafka "OsrmGetDistancesAPI" "OSRM" entityId (Just updatedReq) rsp
ApiCallLogger.pushExternalApiCallDataToKafka "OsrmGetDistancesAPI" "OSRM" entityId (Just $ map getCoordinatesAndDriverId (toList updatedReq.origins)) rsp
fromEitherM (FailedToCallOsrmTableAPI . show) rsp

callOsrmRouteAPI ::
Expand Down