def get_flights( self, departure_iata, destination_iata, departure_date, return_date, currency="GBP", min_nights=7, max_nights=28, stop_overs=0, ): """find flight information using Tequila Kiwi API and return a FlightData object Args: departure_iata (str): IATA Code for origin city destination_iata (str): IATA Code for destination city departure_date (str): dd/mm/YYYY for earliest departure return_date (str): dd/mm/YYYY for latest return currency (str, optional): currency to return. Defaults to "GBP". min_nights (int, optional): minimum nights. Defaults to 7. max_nights (int, optional): maximum nights. Defaults to 28. Returns: FlightData: FlightData for lowst cost flight """ url = self.url_base + "/v2/search" params = { "fly_from": departure_iata, "fly_to": destination_iata, "date_from": departure_date, "date_to": return_date, "nights_in_dst_from": min_nights, "nights_in_dst_to": max_nights, "curr": currency, "flight_type": "round", "one_for_city": 1, "max_stopovers": stop_overs, } response = requests.get(url, params=params, headers=self.headers) data = response.json() # course reccomends a try/except block here instead...I disagree if len(data["data"]) > 0: data = data["data"][0] else: if stop_overs < 3: stop_overs += 1 return self.get_flights( departure_iata, destination_iata, departure_date, return_date, currency, min_nights, max_nights, stop_overs=stop_overs, ) else: return None flight_data = FlightData( departure_city=data["cityFrom"], departure_airport=data["flyFrom"], destination_city=data["cityTo"], destination_airport=data["flyTo"], departure_date=data["route"][0]["local_departure"].split("T")[0], return_date=data["route"][-1]["local_arrival"].split("T")[0], price=data["price"], ) if stop_overs > 0: flight_data.stop_overs = stop_overs flight_data.via_city = data["route"][0]["cityTo"] return flight_data