public async Task <ReturnFlight> FindCheapestReturnFlight(FindCheapestReturnFlightCriteria criteria) { var request = PegasusApiUtils.GetReturnFlightRequest(criteria); var response = await PegasusApiUtils.ExecuteFindReturnFlightsRequest(_httpClient, request).ConfigureAwait(true); var results = PegasusApiUtils.ParseReturnFlightResults( response, criteria.FromAirport, criteria.ToAirport, criteria.DepartureDate, criteria.ReturnDate).ToList(); var departureFlight = results .Where(x => x.From == criteria.FromAirport && criteria.DepartureFlightsFilter.IsSatisfiedBy(x)) .GetCheapestFlight(); var returnFlight = results .Where(x => x.To == criteria.FromAirport && criteria.ReturnFlightsFilter.IsSatisfiedBy(x)) .GetCheapestFlight(); if (departureFlight != null && returnFlight != null) { return(new ReturnFlight(departureFlight, returnFlight)); } return(null); }
public PegasusCheapestFlightFinder() { _httpClient = PegasusApiUtils.CreateHttpClient(); }