tripit 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. data/Gemfile +13 -0
  2. data/Gemfile.lock +20 -0
  3. data/LICENSE.txt +20 -0
  4. data/README.md +157 -0
  5. data/Rakefile +53 -0
  6. data/VERSION +1 -0
  7. data/lib/trip_it/base.rb +105 -0
  8. data/lib/trip_it/classes/address.rb +18 -0
  9. data/lib/trip_it/classes/flight_status.rb +27 -0
  10. data/lib/trip_it/classes/group.rb +12 -0
  11. data/lib/trip_it/classes/image.rb +10 -0
  12. data/lib/trip_it/classes/invitee.rb +14 -0
  13. data/lib/trip_it/classes/objects/activity_object.rb +45 -0
  14. data/lib/trip_it/classes/objects/air_object.rb +39 -0
  15. data/lib/trip_it/classes/objects/base_object.rb +31 -0
  16. data/lib/trip_it/classes/objects/car_object.rb +43 -0
  17. data/lib/trip_it/classes/objects/cruise_object.rb +44 -0
  18. data/lib/trip_it/classes/objects/directions_object.rb +27 -0
  19. data/lib/trip_it/classes/objects/lodging_object.rb +34 -0
  20. data/lib/trip_it/classes/objects/map_object.rb +26 -0
  21. data/lib/trip_it/classes/objects/note_object.rb +43 -0
  22. data/lib/trip_it/classes/objects/rail_object.rb +39 -0
  23. data/lib/trip_it/classes/objects/reservation_object.rb +43 -0
  24. data/lib/trip_it/classes/objects/restaurant_object.rb +34 -0
  25. data/lib/trip_it/classes/objects/transport_object.rb +39 -0
  26. data/lib/trip_it/classes/objects/weather_object.rb +32 -0
  27. data/lib/trip_it/classes/points_program.rb +28 -0
  28. data/lib/trip_it/classes/points_program_activity.rb +15 -0
  29. data/lib/trip_it/classes/points_program_expiration.rb +12 -0
  30. data/lib/trip_it/classes/profile.rb +68 -0
  31. data/lib/trip_it/classes/profile_email_address.rb +15 -0
  32. data/lib/trip_it/classes/segments/air_segment.rb +56 -0
  33. data/lib/trip_it/classes/segments/cruise_segment.rb +28 -0
  34. data/lib/trip_it/classes/segments/rail_segment.rb +25 -0
  35. data/lib/trip_it/classes/segments/transport_segment.rb +34 -0
  36. data/lib/trip_it/classes/tp_date_time.rb +11 -0
  37. data/lib/trip_it/classes/traveler.rb +16 -0
  38. data/lib/trip_it/classes/trip.rb +230 -0
  39. data/lib/trip_it/classes/trip_crs_remark.rb +12 -0
  40. data/lib/trip_it/enums/activity_detail_type.rb +8 -0
  41. data/lib/trip_it/enums/cruise_detail_type.rb +5 -0
  42. data/lib/trip_it/enums/flight_status_code.rb +15 -0
  43. data/lib/trip_it/enums/note_detail_type.rb +5 -0
  44. data/lib/trip_it/enums/transport_detail_type.rb +6 -0
  45. data/lib/trip_it/oauth.rb +77 -0
  46. data/lib/trip_it/util/param_util.rb +235 -0
  47. data/lib/tripit.rb +45 -0
  48. data/test/fixtures/air_info.json +0 -0
  49. data/test/helper.rb +18 -0
  50. data/test/test_tripit.rb +7 -0
  51. data/test/unit/base_test.rb +16 -0
  52. data/test/unit/classes/address_test.rb +0 -0
  53. data/test/unit/classes/flight_status_test.rb +0 -0
  54. data/test/unit/classes/group_test.rb +0 -0
  55. data/test/unit/classes/image_test.rb +0 -0
  56. data/test/unit/classes/invitee_test.rb +0 -0
  57. data/test/unit/classes/objects/activity_object_test.rb +0 -0
  58. data/test/unit/classes/objects/air_object_test.rb +0 -0
  59. data/test/unit/classes/objects/base_object_test.rb +0 -0
  60. data/test/unit/classes/objects/car_object_test.rb +0 -0
  61. data/test/unit/classes/objects/cruise_object_test.rb +0 -0
  62. data/test/unit/classes/objects/directions_object_test.rb +0 -0
  63. data/test/unit/classes/objects/lodging_object_test.rb +0 -0
  64. data/test/unit/classes/objects/map_object_test.rb +0 -0
  65. data/test/unit/classes/objects/note_object_test.rb +0 -0
  66. data/test/unit/classes/objects/rail_object_test.rb +0 -0
  67. data/test/unit/classes/objects/reservation_object_test.rb +0 -0
  68. data/test/unit/classes/objects/restaurant_object_test.rb +0 -0
  69. data/test/unit/classes/objects/transport_object_test.rb +0 -0
  70. data/test/unit/classes/objects/weather_object_test.rb +0 -0
  71. data/test/unit/classes/points_program_activity_test.rb +0 -0
  72. data/test/unit/classes/points_program_expiration_test.rb +0 -0
  73. data/test/unit/classes/points_program_test.rb +0 -0
  74. data/test/unit/classes/profile_email_address_test.rb +0 -0
  75. data/test/unit/classes/profile_test.rb +0 -0
  76. data/test/unit/classes/segments/air_segment_test.rb +0 -0
  77. data/test/unit/classes/segments/cruise_segment_test.rb +0 -0
  78. data/test/unit/classes/segments/rail_segment_test.rb +0 -0
  79. data/test/unit/classes/segments/transport_segment_test.rb +0 -0
  80. data/test/unit/classes/traveler_test.rb +0 -0
  81. data/test/unit/classes/trip_crs_remark_test.rb +0 -0
  82. data/test/unit/classes/trip_test.rb +0 -0
  83. data/test/unit/enums/activity_detail_type_test.rb +0 -0
  84. data/test/unit/enums/cruise_detail_type_test.rb +0 -0
  85. data/test/unit/enums/flight_status_type_test.rb +0 -0
  86. data/test/unit/enums/note_detail_type_test.rb +0 -0
  87. data/test/unit/enums/transport_detail_type_test.rb +0 -0
  88. data/test/unit/oauth_test.rb +0 -0
  89. data/test/unit/util/param_util_test.rb +0 -0
  90. data/tripit.gemspec +188 -0
  91. metadata +284 -0
@@ -0,0 +1,27 @@
1
+ module TripIt
2
+ class DirectionsObject < BaseObject
3
+ datetime_param :date_time
4
+ address_param :start_address, :end_address
5
+
6
+ def initialize(client, obj_id = nil, source = nil)
7
+ @client = client
8
+ unless obj_id.nil?
9
+ @obj_id = obj_id
10
+ populate(source)
11
+ end
12
+ end
13
+
14
+ def populate(source)
15
+ info = source || @client.get("/directions", :id => @obj_id)["DirectionsObject"]
16
+ super(info)
17
+ @date_time = convertDT(info["DateTime"])
18
+ @start_address = TripIt::Address.new(info["StartAddress"]) unless info["StartAddress"].nil?
19
+ @end_address = TripIt::Address.new(info["EndAddress"]) unless info["EndAddress"].nil?
20
+ end
21
+
22
+ def sequence
23
+ arr = super
24
+ arr + ["@date_time", "@start_address", "@end_address"]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,34 @@
1
+ module TripIt
2
+ class LodgingObject < ReservationObject
3
+ datetime_param :start_date_time, :end_date_time
4
+ string_param :number_guests, :number_rooms, :room_type
5
+ address_param :address
6
+ traveler_array_param :guest
7
+
8
+ def initialize(client, obj_id = nil, source = nil)
9
+ @client = client
10
+ unless obj_id.nil?
11
+ @obj_id = obj_id
12
+ populate(source)
13
+ end
14
+ end
15
+
16
+ def populate(source)
17
+ info = source || @client.get("/lodging", :id => @obj_id)["LodgingObject"]
18
+ super(info)
19
+ @start_date_time = convertDT(info["StartDateTime"])
20
+ @end_date_time = convertDT(info["EndDateTime"])
21
+ @number_guests = info["number_guests"]
22
+ @number_rooms = info["number_rooms"]
23
+ @room_type = info["room_type"]
24
+ @address = TripIt::Address.new(info["Address"]) unless info["Address"].nil?
25
+ @guest = []
26
+ chkAndPopulate(@guest, TripIt::Traveler, info["Guest"])
27
+ end
28
+
29
+ def sequence
30
+ arr = super
31
+ arr + ["@start_date_time", "@end_date_time", "@address", "@guest", "@number_guests", "@number_rooms", "@room_type"]
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,26 @@
1
+ module TripIt
2
+ class MapObject < BaseObject
3
+ datetime_param :date_time
4
+ address_param :address
5
+
6
+ def initialize(client, obj_id = nil, source = nil)
7
+ @client = client
8
+ unless obj_id.nil?
9
+ @obj_id = obj_id
10
+ populate(source)
11
+ end
12
+ end
13
+
14
+ def populate(source)
15
+ info = source || @client.get("/map", :id => @obj_id)["MapObject"]
16
+ super(info)
17
+ @date_time = convertDT(info["DateTime"])
18
+ @address = TripIt::Address.new(info["Address"]) unless info["Address"].nil?
19
+ end
20
+
21
+ def sequence
22
+ arr = super
23
+ arr + ["@date_time","@address"]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,43 @@
1
+ module TripIt
2
+ class NoteObject < BaseObject
3
+ datetime_param :date_time
4
+ address_param :address
5
+ string_param :source, :text, :url, :notes
6
+
7
+ def initialize(client, obj_id = nil, source = nil)
8
+ @client = client
9
+ unless obj_id.nil?
10
+ @obj_id = obj_id
11
+ populate(source)
12
+ end
13
+ end
14
+
15
+ def populate(source)
16
+ info = source || @client.get("/note", :id => @obj_id)["NoteObject"]
17
+ super(info)
18
+ @date_time = convertDT(info["DateTime"])
19
+ @address = TripIt::Address.new(info["Address"]) unless info["Address"].nil?
20
+ @source = info["source"]
21
+ @text = info["text"]
22
+ @url = info["url"]
23
+ @notes = info["notes"]
24
+ @detail_type_code = info["detail_type_code"]
25
+ end
26
+
27
+ def detail_type_code
28
+ @detail_type_code
29
+ end
30
+ def detail_type_code=(val)
31
+ if NOTE_DETAIL_TYPE_CODE.has_key?(val)
32
+ @detail_type_code = val
33
+ else
34
+ raise ArgumentError, "detail_type_code must have a valid NOTE_DETAIL_TYPE_CODE"
35
+ end
36
+ end
37
+
38
+ def sequence
39
+ arr = super
40
+ arr + ["@date_time", "@address", "@detail_type_code", "@source", "@text", "@url", "@notes"]
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,39 @@
1
+ module TripIt
2
+ class RailObject < ReservationObject
3
+ traveler_array_param :traveler
4
+
5
+ def initialize(client, obj_id = nil, source = nil)
6
+ @client = client
7
+ unless obj_id.nil?
8
+ @obj_id = obj_id
9
+ populate(source)
10
+ end
11
+ end
12
+
13
+ def populate(source)
14
+ info = source || @client.get("/rail", :id => @obj_id)["RailObject"]
15
+ super(info)
16
+ @segment = []
17
+ @traveler = []
18
+ chkAndPopulate(@segment, TripIt::RailSegment, info["Segment"])
19
+ chkAndPopulate(@traveler, TripIt::Traveler, info["Traveler"])
20
+ @segment = @segment.sort_by {|seg| seg.start_date_time } unless @segment.empty?
21
+ end
22
+
23
+ def segment
24
+ @segment
25
+ end
26
+ def segment=(val)
27
+ if val.is_a?(Array) && val.all? { |e| RailSegment === e }
28
+ @segment = val
29
+ else
30
+ raise ArgumentError, "Segment must be an Array of RailSegments"
31
+ end
32
+ end
33
+
34
+ def sequence
35
+ arr = super
36
+ arr + ["@segment", "@traveler"]
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,43 @@
1
+ module TripIt
2
+ class ReservationObject < BaseObject
3
+ string_param :booking_rate, :booking_site_conf_num, :booking_site_name, :booking_site_url, :record_locator, :supplier_conf_num, :booking_site_name, \
4
+ :booking_site_phone, :booking_site_url, :record_locator, :supplier_conf_num, :supplier_contact, :supplier_email_address, \
5
+ :supplier_name, :supplier_phone, :supplier_url, :notes, :restrictions, :total_cost
6
+
7
+ datetime_param :cancellation_date_time
8
+
9
+ date_param :booking_date
10
+
11
+ boolean_param :is_purchased
12
+
13
+ def populate(info)
14
+ super(info)
15
+ @booking_rate = info["booking_rate"]
16
+ @booking_site_conf_num = info["booking_site_conf_num"]
17
+ @booking_site_name = info["booking_site_name"]
18
+ @booking_site_phone = info["booking_site_phone"]
19
+ @booking_site_url = info["booking_site_url"]
20
+ @record_locator = info["record_locator"]
21
+ @supplier_conf_num = info["supplier_conf_num"]
22
+ @supplier_contact = info["supplier_contact"]
23
+ @supplier_email_address = info["supplier_email_address"]
24
+ @supplier_name = info["supplier_name"]
25
+ @supplier_phone = info["supplier_phone"]
26
+ @supplier_url = info["supplier_url"]
27
+ @notes = info["notes"]
28
+ @restrictions = info["restrictions"]
29
+ @total_cost = info["total_cost"]
30
+ @cancellation_date_time = convertDT(info["CancellationDateTime"])
31
+ @booking_date = info["booking_date"]
32
+ @is_purchased = Boolean(info["is_purchased"])
33
+ end
34
+
35
+ def sequence
36
+ arr = super
37
+ arr + ["@cancellation_date_time", "@booking_date", "@booking_rate", "@booking_site_conf_num", "@booking_site_name",
38
+ "@booking_site_phone", "@booking_site_url", "@record_locator", "@supplier_conf_num", "@supplier_contact",
39
+ "@supplier_email_address", "@supplier_name", "@supplier_phone", "@supplier_url", "@is_purchased", "@notes",
40
+ "@restrictions", "@total_cost" ]
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,34 @@
1
+ module TripIt
2
+ class RestaurantObject < ReservationObject
3
+ datetime_param :date_time
4
+ address_param :address
5
+ traveler_param :reservation_holder
6
+ string_param :cuisine, :dress_code, :hours, :number_patrons, :price_range
7
+
8
+ def initialize(client, obj_id = nil, source = nil)
9
+ @client = client
10
+ unless obj_id.nil?
11
+ @obj_id = obj_id
12
+ populate(source)
13
+ end
14
+ end
15
+
16
+ def populate(source)
17
+ info = source || @client.get("/restaurant", :id => @obj_id)["RestaurantObject"]
18
+ super(info)
19
+ @date_time = convertDT(info["DateTime"])
20
+ @address = TripIt::Address.new(info["Address"]) unless info["Address"].nil?
21
+ @reservation_holder = TripIt::Traveler.new(info["ReservationHolder"]) unless info["ReservationHolder"].nil?
22
+ @cuisine = info["cuisine"]
23
+ @dress_code = info["dress_code"]
24
+ @hours = info["hours"]
25
+ @number_patrons = info["number_patrons"]
26
+ @price_range = info["price_range"]
27
+ end
28
+
29
+ def sequence
30
+ arr = super
31
+ arr + ["@date_time", "@address", "@reservation_holder", "@cuisine", "@dress_code", "@hours", "@number_patrons", "@price_range"]
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ module TripIt
2
+ class TransportObject < ReservationObject
3
+ traveler_array_param :traveler
4
+
5
+ def initialize(client, obj_id = nil, source = nil)
6
+ @client = client
7
+ unless obj_id.nil?
8
+ @obj_id = obj_id
9
+ populate(source)
10
+ end
11
+ end
12
+
13
+ def populate(source)
14
+ info = source || @client.get("/transport", :id => @obj_id)["TransportObject"]
15
+ super(info)
16
+ @segment = []
17
+ @traveler = []
18
+ chkAndPopulate(@segment, TripIt::TransportSegment, info["Segment"])
19
+ chkAndPopulate(@traveler, TripIt::Traveler, info["Traveler"])
20
+ @segment = @segment.sort_by {|seg| seg.start_date_time } unless @segment.empty?
21
+ end
22
+
23
+ def segment
24
+ @segment
25
+ end
26
+ def segment=(val)
27
+ if val.is_a?(Array) && val.all? { |e| TransportSegment === e }
28
+ @segment = val
29
+ else
30
+ raise ArgumentError, "Segment must be an Array of TransportSegments"
31
+ end
32
+ end
33
+
34
+ def sequence
35
+ arr = super
36
+ arr + ["@segment", "@traveler"]
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,32 @@
1
+ module TripIt
2
+ class WeatherObject < BaseObject
3
+ date_param :date
4
+ string_param :location
5
+ float_param :avg_high_temp_c, :avg_low_temp_c, :avg_wind_speed_kn, :avg_precipitation_cm, :avg_snow_depth_cm
6
+
7
+ def initialize(client, obj_id = nil, source = nil)
8
+ @client = client
9
+ unless obj_id.nil?
10
+ @obj_id = obj_id
11
+ populate(source)
12
+ end
13
+ end
14
+
15
+ def populate(source)
16
+ info = source || @client.get("/weather", :id => @obj_id)["WeatherObject"]
17
+ super(info)
18
+ @date = Date.parse(info["date"]) unless info["date"].nil?
19
+ @location = info["location"]
20
+ @avg_high_temp_c = info["avg_high_temp_c"].to_f
21
+ @avg_low_temp_c = info["avg_low_temp_c"].to_f
22
+ @avg_wind_speed_kn = info["avg_wind_speed_kn"].to_f
23
+ @avg_precipitation_cm = info["avg_precipitation_cm"].to_f
24
+ @avg_snow_depth_cm = info["avg_snow_depth_cm"].to_f
25
+ end
26
+
27
+ def sequence
28
+ arr = super
29
+ arr + ["@date", "@location", "@avg_high_temp_c", "@avg_low_temp_c", "@avg_wind_speed_kn", "@avg_precipitation_cm", "@avg_snow_depth_cm"]
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,28 @@
1
+ module TripIt
2
+ class PointsProgram < Base
3
+ attr_reader :id, :name, :account_number, :account_login, :balance, :elite_status, :elite_next_status, :elite_ytd_qualify, :elite_need_to_earn, \
4
+ :error_message, :last_modified, :total_num_activities, :total_num_expirations, :activity, :expiration
5
+
6
+ def initialize(params = {})
7
+ raise ArgumentError, "PointsProgram created with empty parameters" if params.empty?
8
+
9
+ @id = params["id"]
10
+ @name = params["name"]
11
+ @account_number = params["account_number"]
12
+ @account_login = params["account_login"]
13
+ @balance = params["balance"]
14
+ @elite_status = params["elite_status"]
15
+ @elite_next_status = params["elite_next_status"]
16
+ @elite_ytd_qualify = params["elite_ytd_qualify"]
17
+ @elite_need_to_earn = params["elite_need_to_earn"]
18
+ @error_message = params["error_message"]
19
+ @last_modified = params["last_modified"]
20
+ @total_num_activities = params["total_num_activities"]
21
+ @total_num_expirations = params["total_num_expirations"]
22
+ @activity = []
23
+ @expiration = []
24
+ chkAndPopulate(@activity, TripIt::PointsProgramActivity, params["Activity"]) unless params["Activity"].nil?
25
+ chkAndPopulate(@expiration, TripIt::PointsProgramExpiration, params["Expiration"]) unless params["Expiration"].nil?
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ module TripIt
2
+ class PointsProgramActivity < Base
3
+ attr_reader :date, :description, :base, :bonus, :total
4
+
5
+ def initialize(params = {})
6
+ raise ArgumentError, "PointsProgramActivity created with empty parameters" if params.empty?
7
+
8
+ @date = Date.parse(params["date"]) unless params["date"].nil?
9
+ @description = params["description"]
10
+ @base = params["base"]
11
+ @bonus = params["bonus"]
12
+ @total = params["total"]
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module TripIt
2
+ class PointsProgramExpiration < Base
3
+ attr_reader :date, :amount
4
+
5
+ def initialize(params = {})
6
+ raise ArgumentError, "PointsProgramExpiration created with empty parameters" if params.empty?
7
+
8
+ @date = Date.parse(params["date"]) unless params["date"].nil?
9
+ @amount = params["amount"]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,68 @@
1
+ module TripIt
2
+ class Profile < Base
3
+ attr_reader :profile_email_addresses, :group_memberships, :screen_name, :public_display_name, :profile_url, :home_city, :company, \
4
+ :about_me_info, :photo_url, :activity_feed_url, :alerts_feed_url, :ical_url, :ref
5
+ boolean_read_param :is_pro, :is_client
6
+
7
+ def initialize(client, source = nil)
8
+ @client = client
9
+ populate(source)
10
+ end
11
+
12
+ def populate(source)
13
+ info = source || @client.get("/profile")["Profile"]
14
+
15
+ @screen_name = info['screen_name']
16
+ @public_display_name = info['public_display_name']
17
+ @profile_url = info['profile_url']
18
+ @home_city = info['home_city']
19
+ @company = info['company']
20
+ @about_me_info = info['about_me_info']
21
+ @photo_url = info['photo_url']
22
+ @activity_feed_url = info['activity_feed_url']
23
+ @alerts_feed_url = info['alerts_feed_url']
24
+ @is_pro = Boolean(info['is_pro'])
25
+ @is_client = Boolean(info['is_client'])
26
+ @ical_url = info['ical_url']
27
+ @ref = info['@attributes']['ref']
28
+ @profile_email_addresses = []
29
+ @group_memberships = []
30
+
31
+ chkAndPopulate(@profile_email_addresses, TripIt::ProfileEmailAddress, info['ProfileEmailAddresses']['ProfileEmailAddress']) unless info['ProfileEmailAddresses'].nil?
32
+ chkAndPopulate(@group_memberships, TripIt::Group, info['GroupMemberships']['Group']) unless info['GroupMemberships'].nil?
33
+ end
34
+
35
+ def trips(params = {})
36
+ return @tripArr unless @tripArr.nil?
37
+ @tripArr = []
38
+ tripList = @client.list("/trip", params)["Trip"]
39
+ unless tripList.nil?
40
+ if tripList.is_a?(Array)
41
+ tripList.each do |trip|
42
+ @tripArr << TripIt::Trip.new(@client,trip['id'],params[:include_objects])
43
+ end
44
+ else
45
+ @tripArr << TripIt::Trip.new(@client,tripList['id'],params[:include_objects])
46
+ end
47
+ end
48
+ return @tripArr
49
+ end
50
+
51
+ def points_programs
52
+ return [] if self.is_pro == false
53
+ return @progArr unless @progArr.nil?
54
+ @progArr = []
55
+ progList = @client.list("/points_program")["PointsProgram"]
56
+ unless progList.nil?
57
+ if progList.is_a?(Array)
58
+ progList.each do |prog|
59
+ @progArr << TripIt::PointsProgram.new(prog)
60
+ end
61
+ else
62
+ @progArr << TripIt::PointsProgram.new(progList)
63
+ end
64
+ end
65
+ return @progArr
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,15 @@
1
+ module TripIt
2
+ class ProfileEmailAddress < Base
3
+ attr_reader :address
4
+ boolean_read_param :is_auto_import, :is_confirmed, :is_primary
5
+
6
+ def initialize(params = {})
7
+ raise ArgumentError, "ProfileEmailAddress created with empty parameters" if params.empty?
8
+
9
+ @address = params["address"]
10
+ @is_auto_import = Boolean(params["is_auto_import"])
11
+ @is_confirmed = Boolean(params["is_confirmed"])
12
+ @is_primary = Boolean(params["is_primary"])
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,56 @@
1
+ module TripIt
2
+ class AirSegment < Base
3
+ attr_reader :status, :start_airport_latitude, :start_airport_longitude, :end_airport_latitude, :end_airport_longitude, :marketing_airline_code, \
4
+ :operating_airline_code, :alternate_flights_url, :aircraft_display_name, :conflict_resolution_url, :id
5
+ boolean_read_param :is_hidden
6
+
7
+ string_param :start_city_name, :start_gate, :start_terminal, :end_city_name, :end_gate, :end_terminal, :marketing_airline, :marketing_flight_number, \
8
+ :operating_airline, :operating_flight_number, :aircraft, :distance, :duration, :entertainment, :meal, :notes, :ontime_perc, \
9
+ :seats, :service_class, :stops, :baggage_claim, :check_in_url
10
+
11
+ datetime_param :start_date_time, :end_date_time
12
+
13
+ airportcode_param :start_airport_code, :end_airport_code
14
+
15
+ def initialize(params = {})
16
+ @status = TripIt::FlightStatus.new(params["Status"])
17
+ @start_airport_latitude = params["start_airport_latitude"]
18
+ @start_airport_longitude = params["start_airport_longitude"]
19
+ @end_airport_latitude = params["end_airport_latitude"]
20
+ @end_airport_longitude = params["end_airport_longitude"]
21
+ @marketing_airline_code = params["marketing_airline_code"]
22
+ @operating_airline_code = params["operating_airline_code"]
23
+ @alternate_flights_url = params["alternate_flights_url"]
24
+ @aircraft_display_name = params["aircraft_display_name"]
25
+ @conflict_resolution_url = params["conflict_resolution_url"]
26
+ @is_hidden = Boolean(params["is_hidden"])
27
+ @id = params["id"]
28
+ @start_city_name = params["start_city_name"]
29
+ @start_gate = params["start_gate"]
30
+ @start_terminal = params["start_terminal"]
31
+ @end_city_name = params["end_city_name"]
32
+ @end_gate = params["end_gate"]
33
+ @end_terminal = params["end_terminal"]
34
+ @marketing_airline = params["marketing_airline"]
35
+ @marketing_flight_number = params["marketing_flight_number"]
36
+ @operating_airline = params["operating_airline"]
37
+ @operating_flight_number = params["operating_flight_number"]
38
+ @aircraft = params["aircraft"]
39
+ @distance = params["distance"]
40
+ @duration = params["duration"]
41
+ @entertainment = params["entertainment"]
42
+ @meal = params["meal"]
43
+ @notes = params["notes"]
44
+ @ontime_perc = params["ontime_perc"]
45
+ @seats = params["seats"]
46
+ @service_class = params["service_class"]
47
+ @stops = params["stops"]
48
+ @baggage_claim = params["baggage_claim"]
49
+ @check_in_url = params["check_in_url"]
50
+ @start_date_time = convertDT(params["StartDateTime"])
51
+ @end_date_time = convertDT(params["EndDateTime"])
52
+ @start_airport_code = params["start_airport_code"]
53
+ @end_airport_code = params["end_airport_code"]
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,28 @@
1
+ module TripIt
2
+ class CruiseSegment < Base
3
+ datetime_param :start_date_time, :end_date_time
4
+ address_param :location_address
5
+ string_param :location_name
6
+ attr_reader :id
7
+
8
+ def initialize(params = {})
9
+ @start_date_time = convertDT(params["StartDateTime"])
10
+ @end_date_time = convertDT(params["EndDateTime"])
11
+ @location_address = TripIt::Address.new(params["LocationAddress"]) unless params["LocationAddress"].nil?
12
+ @location_name = params["location_name"]
13
+ @id = params["id"]
14
+ @detail_type_code = params["detail_type_code"]
15
+ end
16
+
17
+ def detail_type_code
18
+ @detail_type_code
19
+ end
20
+ def detail_type_code=(val)
21
+ if CRUISE_DETAIL_TYPE_CODE.has_key?(val)
22
+ @detail_type_code = val
23
+ else
24
+ raise ArgumentError, "detail_type_code must be a valid CRUISE_DETAIL_TYPE_CODE"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,25 @@
1
+ module TripIt
2
+ class RailSegment < Base
3
+ datetime_param :start_date_time, :end_date_time
4
+ address_param :start_station_address, :end_station_address
5
+ string_param :start_station_name, :end_station_name, :carrier_name, :coach_number, :confirmation_num, :seats, :service_class, :train_number, :train_type
6
+ attr_reader :id
7
+
8
+ def initialize(params = {})
9
+ @start_date_time = convertDT(params["StartDateTime"])
10
+ @end_date_time = convertDT(params["EndDateTime"])
11
+ @start_station_address = TripIt::Address.new(params["StartStationAddress"]) unless params["StartStationAddress"].nil?
12
+ @end_station_address = TripIt::Address.new(params["EndStationAddress"]) unless params["EndStationAddress"].nil?
13
+ @id = params["id"]
14
+ @start_station_name = params["start_station_name"]
15
+ @end_station_name = params["end_station_name"]
16
+ @carrier_name = params["carrier_name"]
17
+ @coach_number = params["coach_number"]
18
+ @confirmation_num = params["confirmation_num"]
19
+ @seats = params["seats"]
20
+ @service_class = params["service_class"]
21
+ @train_number = params["train_number"]
22
+ @train_type = params["train_type"]
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,34 @@
1
+ module TripIt
2
+ class TransportSegment < Base
3
+ datetime_param :start_date_time, :end_date_time
4
+ address_param :start_location_address, :end_location_address
5
+ string_param :start_location_name, :end_location_name, :carrier_name, :confirmation_num, :number_passengers, :vehicle_description
6
+ attr_reader :id
7
+
8
+ def initialize(params = {})
9
+ @start_date_time = convertDT(params["StartDateTime"])
10
+ @end_date_time = convertDT(params["EndDateTime"])
11
+ @start_location_address = TripIt::Address.new(params["StartLocationAddress"]) unless params["StartLocationAddress"].nil?
12
+ @end_location_address = TripIt::Address.new(params["EndLocationAddress"]) unless params["EndLocationAddress"].nil?
13
+ @start_location_name = params["start_location_name"]
14
+ @end_location_name = params["end_location_name"]
15
+ @carrier_name = params["carrier_name"]
16
+ @confirmation_num = params["confirmation_num"]
17
+ @number_passengers = params["number_passengers"]
18
+ @vehicle_description = params["vehicle_description"]
19
+ @id = params["id"]
20
+ @detail_type_code = params["detail_type_code"]
21
+ end
22
+
23
+ def detail_type_code
24
+ @detail_type_code
25
+ end
26
+ def detail_type_code=(val)
27
+ if TRANSPORT_DETAIL_TYPE_CODE.has_key?(val)
28
+ @detail_type_code = val
29
+ else
30
+ raise ArgumentError, "detail_type_code must be a valid TRANSPORT_DETAIL_TYPE_CODE"
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,11 @@
1
+ module TripIt
2
+ class TpDateTime < Base
3
+ attr_reader :date, :time
4
+
5
+ def initialize(rubyDT)
6
+ return if rubyDT.nil?
7
+ @date = rubyDT.strftime("%Y-%m-%d")
8
+ @time = rubyDT.strftime("%H:%M:%S")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ module TripIt
2
+ class Traveler < Base
3
+ string_param :first_name, :middle_name, :last_name, :frequent_traveler_num, :frequent_traveler_supplier, :meal_preference, :seat_preference, :ticket_num
4
+
5
+ def initialize(params = {})
6
+ @first_name = params["first_name"]
7
+ @middle_name = params["middle_name"]
8
+ @last_name = params["last_name"]
9
+ @frequent_traveler_num = params["frequent_traveler_num"]
10
+ @frequent_traveler_supplier = params["frequent_traveler_supplier"]
11
+ @meal_preference = params["meal_preference"]
12
+ @seat_preference = params["seat_preference"]
13
+ @ticket_num = params["ticket_num"]
14
+ end
15
+ end
16
+ end