Class: ExpediaApi::Entities::PackageFlightLeg
- Inherits:
-
Object
- Object
- ExpediaApi::Entities::PackageFlightLeg
- Defined in:
- lib/expedia_api/entities/package_flight_leg.rb
Overview
wrapper class for each of the flight legs
Instance Method Summary collapse
-
#extract_segments ⇒ Object
extracts the segments of the flight from the json.
-
#hours_all_segments ⇒ Object
returns the hours of the flight, if nor parsable, returns nil.
-
#index ⇒ Object
returns the index of the flight leg.
-
#initialize(raw_data) ⇒ PackageFlightLeg
constructor
The raw data by the API looks like this:.
-
#is_return_flight? ⇒ Boolean
returns true if we have a return flight leg.
-
#is_to_flight? ⇒ Boolean
returns true if we have a to flight.
-
#minutes_all_segments ⇒ Object
returns the minutes of the flight, if nor parsable, returns nil.
-
#segments ⇒ Object
returns the flight segments of the flight.
-
#total_duration_seconds ⇒ Object
returns the total time it will in seconds.
Constructor Details
#initialize(raw_data) ⇒ PackageFlightLeg
The raw data by the API looks like this:
{
"FlightDuration": "PT21H50M",
"FlightLegIndex": "1",
"FlightSegment": [
{
"ArrivalAirportCode": "DUS",
"ArrivalDateTime": "2016-09-07T08:30:00",
"CarrierCode": "AB",
"DepartureAirportCode": "HAM",
"DepartureDateTime": "2016-09-07T07:30:00",
"FlightDuration": "PT1H0M",
"FlightNumber": "6743",
"FlightSegmentIndex": "1"
},
{
"ArrivalAirportCode": "AUH",
"ArrivalDateTime": "2016-09-07T20:20:00",
"CarrierCode": "AB",
"DepartureAirportCode": "DUS",
"DepartureDateTime": "2016-09-07T11:30:00",
"FlightDuration": "PT6H50M",
"FlightNumber": "4008",
"FlightSegmentIndex": "2"
},
{
"ArrivalAirportCode": "SYD",
"ArrivalDateTime": "2016-09-08T17:55:00",
"CarrierCode": "AB",
"DepartureAirportCode": "AUH",
"DepartureDateTime": "2016-09-07T21:55:00",
"FlightDuration": "PT14H0M",
"FlightNumber": "4070",
"FlightSegmentIndex": "3"
}
]
}
44 45 46 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 44 def initialize(raw_data) @raw_data = raw_data || {} end |
Instance Method Details
#extract_segments ⇒ Object
extracts the segments of the flight from the json
62 63 64 65 66 67 68 69 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 62 def extract_segments data = @raw_data[:FlightSegment] || [] if data.is_a?(Array) data else [data] end end |
#hours_all_segments ⇒ Object
returns the hours of the flight, if nor parsable, returns nil
85 86 87 88 89 90 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 85 def hours_all_segments stamp = @raw_data[:FlightDuration].split("PT")[1] stamp.split("H")[0].to_i rescue nil end |
#index ⇒ Object
returns the index of the flight leg
101 102 103 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 101 def index @raw_data[:FlightLegIndex].to_i end |
#is_return_flight? ⇒ Boolean
returns true if we have a return flight leg.
111 112 113 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 111 def is_return_flight? index == 2 end |
#is_to_flight? ⇒ Boolean
returns true if we have a to flight
106 107 108 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 106 def is_to_flight? index == 1 end |
#minutes_all_segments ⇒ Object
returns the minutes of the flight, if nor parsable, returns nil
93 94 95 96 97 98 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 93 def minutes_all_segments stamp = @raw_data[:FlightDuration].split("PT")[1] stamp.split("H")[1].split("M")[0].to_i rescue nil end |
#segments ⇒ Object
returns the flight segments of the flight
49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 49 def segments @segments ||= begin segments = extract_segments.map do |segment| PackageFlightLegSegment.new(segment) end segments.each do |segment| segment.sibling_segments = segments end segments end end |
#total_duration_seconds ⇒ Object
returns the total time it will in seconds.
format by expedia: “PT21H50M”
74 75 76 77 78 79 80 81 82 |
# File 'lib/expedia_api/entities/package_flight_leg.rb', line 74 def total_duration_seconds hours = hours_all_segments minutes = minutes_all_segments if hours && minutes hours * 3600 + minutes * 60 else 0 end end |