private void PopulateRideEtas(LyftRideEtasResponse rideEtas, GetARyderResponse response)
        {
            response.Timezone = rideEtas.Timezone;

            foreach (var pickupEta in rideEtas.NearbyDriversPickupEtas)
            {
                foreach (var ride in response.Rides)
                {
                    if (!ride.Type.Equals(pickupEta.DisplayName))
                    {
                        continue;
                    }

                    if (pickupEta.PickupDurationRange == null)
                    {
                        pickupEta.PickupDurationRange = new LyftPickupDurationRange();
                    }

                    ride.EstimatedEta = ConvertToMinutes(pickupEta.PickupDurationRange.DurationMs / 1000);

                    foreach (var driver in pickupEta.NearbyDrivers)
                    {
                        var newDriver = new GetARyderDriver {
                            Bearing = CalculateBearing(driver.Locations)
                        };
                        newDriver.Location.Latitude  = driver.Locations[0].Latitude;
                        newDriver.Location.Longitude = driver.Locations[0].Longitude;
                        ride.NearbyDrivers.Add(newDriver);
                    }
                }
            }
        }
 private void PopulateRideTypes(LyftRideTypesResponse rideTypes, GetARyderResponse response)
 {
     foreach (var type in rideTypes.RideTypes)
     {
         var newRide = new GetARyderRide {
             Type = type.DisplayName
         };
         response.Rides.Add(newRide);
     }
 }
        private void PopulateRideEstimates(LyftRideEstimatesResponse rideEstimates, GetARyderResponse response)
        {
            foreach (var estimate in rideEstimates.CostEstimates)
            {
                foreach (var ride in response.Rides)
                {
                    if (!ride.Type.Equals(estimate.DisplayName))
                    {
                        continue;
                    }

                    ride.Description           = $"{estimate.DisplayName}";
                    ride.EstimatedCost         = $"${(estimate.EstimatedCostCentsMax + estimate.EstimatedCostCentsMin) / 2 / 100}";
                    ride.EstimatedRideDuration = ConvertToMinutes(estimate.EstimatedDurationSeconds);
                    ride.ServiceName           = $"Lyft Ride Sharing: {estimate.DisplayName}";
                }
            }
        }
示例#4
0
        protected override async Task <GetARyderResponse> GetAllRidesCore(GetARyderRequest request)
        {
            await MaintainOAuthToken(request);

            var rideTypes = await GetResponseFromLyftApi <LyftRideTypesResponse>(GetMapquestRideTypesUrl(request), request.Credentials.AccessToken);

            var rideEstimates = await GetResponseFromLyftApi <LyftRideEstimatesResponse>(GetMapquestRideEstimatesUrl(request), request.Credentials.AccessToken);

            var rideEtas = await GetResponseFromLyftApi <LyftRideEtasResponse>(GetMapquestRideEtasUrl(request), request.Credentials.AccessToken);

            var response = new GetARyderResponse
            {
                Credentials = request.Credentials
            };

            this._lyftToGetARydertransformer.Transform(request, rideTypes, rideEstimates, rideEtas, response);
            response.FromAddress     = request.FromAddress;
            response.FromGeolocation = request.FromGeolocation;
            response.ToAddress       = request.ToAddress;
            response.ToGeolocation   = request.ToGeolocation;

            return(response);
        }
        public void Transform(GetARyderRequest request, LyftRideTypesResponse rideTypes,
                              LyftRideEstimatesResponse rideEstimates, LyftRideEtasResponse rideEtas, GetARyderResponse response)
        {
            PopulateRideTypes(rideTypes, response);
            PopulateRideEstimates(rideEstimates, response);
            PopulateRideEtas(rideEtas, response);

            response.DeepAppLink = CreateDeepAppLink("Lyft", request);
        }