static Task <RouteInfo> GetRouteBetween(GeoCoordinates origin, GeoCoordinates destination)
        {
            try
            {
                return(DirectionsService.ComputeApproximateDrivingInfo(
                           Program.GoogleApiKey,
                           origin, destination));
            }
            catch (ApplicationException ex)
            {
                Program.LogError($"Failure in {nameof(SinglePassengerRideMatcher)}: {ex.Message}");

                return(Task.FromResult(new RouteInfo(new GeoPolyline(new[]
                {
                    origin,
                    destination
                }))));
            }
        }
        static Task <RouteInfo> GetRouteWithPassenger(UserRideOffer offer, MatchableRideRequest passenger)
        {
            try
            {
                return(DirectionsService.ComputeApproximateDrivingInfo(
                           Program.GoogleApiKey,
                           offer.RideOffer.Trip.Source,
                           offer.RideOffer.Trip.Destination,
                           passenger.Request.RideRequest.Trip.Source,
                           passenger.Request.RideRequest.Trip.Destination));
            }
            catch (ApplicationException ex)
            {
                Program.LogError($"Failure in {nameof(SinglePassengerRideMatcher)}: {ex.Message}");

                return(Task.FromResult(new RouteInfo(new GeoPolyline(new[]
                {
                    offer.RideOffer.Trip.Source,
                    passenger.Request.RideRequest.Trip.Source,
                    passenger.Request.RideRequest.Trip.Destination,
                    offer.RideOffer.Trip.Destination
                }))));
            }
        }