tripit 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +13 -0
- data/Gemfile.lock +20 -0
- data/LICENSE.txt +20 -0
- data/README.md +157 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/lib/trip_it/base.rb +105 -0
- data/lib/trip_it/classes/address.rb +18 -0
- data/lib/trip_it/classes/flight_status.rb +27 -0
- data/lib/trip_it/classes/group.rb +12 -0
- data/lib/trip_it/classes/image.rb +10 -0
- data/lib/trip_it/classes/invitee.rb +14 -0
- data/lib/trip_it/classes/objects/activity_object.rb +45 -0
- data/lib/trip_it/classes/objects/air_object.rb +39 -0
- data/lib/trip_it/classes/objects/base_object.rb +31 -0
- data/lib/trip_it/classes/objects/car_object.rb +43 -0
- data/lib/trip_it/classes/objects/cruise_object.rb +44 -0
- data/lib/trip_it/classes/objects/directions_object.rb +27 -0
- data/lib/trip_it/classes/objects/lodging_object.rb +34 -0
- data/lib/trip_it/classes/objects/map_object.rb +26 -0
- data/lib/trip_it/classes/objects/note_object.rb +43 -0
- data/lib/trip_it/classes/objects/rail_object.rb +39 -0
- data/lib/trip_it/classes/objects/reservation_object.rb +43 -0
- data/lib/trip_it/classes/objects/restaurant_object.rb +34 -0
- data/lib/trip_it/classes/objects/transport_object.rb +39 -0
- data/lib/trip_it/classes/objects/weather_object.rb +32 -0
- data/lib/trip_it/classes/points_program.rb +28 -0
- data/lib/trip_it/classes/points_program_activity.rb +15 -0
- data/lib/trip_it/classes/points_program_expiration.rb +12 -0
- data/lib/trip_it/classes/profile.rb +68 -0
- data/lib/trip_it/classes/profile_email_address.rb +15 -0
- data/lib/trip_it/classes/segments/air_segment.rb +56 -0
- data/lib/trip_it/classes/segments/cruise_segment.rb +28 -0
- data/lib/trip_it/classes/segments/rail_segment.rb +25 -0
- data/lib/trip_it/classes/segments/transport_segment.rb +34 -0
- data/lib/trip_it/classes/tp_date_time.rb +11 -0
- data/lib/trip_it/classes/traveler.rb +16 -0
- data/lib/trip_it/classes/trip.rb +230 -0
- data/lib/trip_it/classes/trip_crs_remark.rb +12 -0
- data/lib/trip_it/enums/activity_detail_type.rb +8 -0
- data/lib/trip_it/enums/cruise_detail_type.rb +5 -0
- data/lib/trip_it/enums/flight_status_code.rb +15 -0
- data/lib/trip_it/enums/note_detail_type.rb +5 -0
- data/lib/trip_it/enums/transport_detail_type.rb +6 -0
- data/lib/trip_it/oauth.rb +77 -0
- data/lib/trip_it/util/param_util.rb +235 -0
- data/lib/tripit.rb +45 -0
- data/test/fixtures/air_info.json +0 -0
- data/test/helper.rb +18 -0
- data/test/test_tripit.rb +7 -0
- data/test/unit/base_test.rb +16 -0
- data/test/unit/classes/address_test.rb +0 -0
- data/test/unit/classes/flight_status_test.rb +0 -0
- data/test/unit/classes/group_test.rb +0 -0
- data/test/unit/classes/image_test.rb +0 -0
- data/test/unit/classes/invitee_test.rb +0 -0
- data/test/unit/classes/objects/activity_object_test.rb +0 -0
- data/test/unit/classes/objects/air_object_test.rb +0 -0
- data/test/unit/classes/objects/base_object_test.rb +0 -0
- data/test/unit/classes/objects/car_object_test.rb +0 -0
- data/test/unit/classes/objects/cruise_object_test.rb +0 -0
- data/test/unit/classes/objects/directions_object_test.rb +0 -0
- data/test/unit/classes/objects/lodging_object_test.rb +0 -0
- data/test/unit/classes/objects/map_object_test.rb +0 -0
- data/test/unit/classes/objects/note_object_test.rb +0 -0
- data/test/unit/classes/objects/rail_object_test.rb +0 -0
- data/test/unit/classes/objects/reservation_object_test.rb +0 -0
- data/test/unit/classes/objects/restaurant_object_test.rb +0 -0
- data/test/unit/classes/objects/transport_object_test.rb +0 -0
- data/test/unit/classes/objects/weather_object_test.rb +0 -0
- data/test/unit/classes/points_program_activity_test.rb +0 -0
- data/test/unit/classes/points_program_expiration_test.rb +0 -0
- data/test/unit/classes/points_program_test.rb +0 -0
- data/test/unit/classes/profile_email_address_test.rb +0 -0
- data/test/unit/classes/profile_test.rb +0 -0
- data/test/unit/classes/segments/air_segment_test.rb +0 -0
- data/test/unit/classes/segments/cruise_segment_test.rb +0 -0
- data/test/unit/classes/segments/rail_segment_test.rb +0 -0
- data/test/unit/classes/segments/transport_segment_test.rb +0 -0
- data/test/unit/classes/traveler_test.rb +0 -0
- data/test/unit/classes/trip_crs_remark_test.rb +0 -0
- data/test/unit/classes/trip_test.rb +0 -0
- data/test/unit/enums/activity_detail_type_test.rb +0 -0
- data/test/unit/enums/cruise_detail_type_test.rb +0 -0
- data/test/unit/enums/flight_status_type_test.rb +0 -0
- data/test/unit/enums/note_detail_type_test.rb +0 -0
- data/test/unit/enums/transport_detail_type_test.rb +0 -0
- data/test/unit/oauth_test.rb +0 -0
- data/test/unit/util/param_util_test.rb +0 -0
- data/tripit.gemspec +188 -0
- 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,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
|