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}"; } } }
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); }