tripit 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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