quicktravel_client 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -14
- data/CHANGELOG.md +6 -0
- data/README.md +10 -0
- data/gemfiles/rails5.gemfile +8 -0
- data/lib/quick_travel/adapter.rb +28 -0
- data/lib/quick_travel/adapter_error.rb +11 -3
- data/lib/quick_travel/booking.rb +5 -38
- data/lib/quick_travel/payment.rb +0 -4
- data/lib/quick_travel/products/scheduled_trip.rb +3 -6
- data/lib/quick_travel/property.rb +1 -0
- data/lib/quick_travel/reservation.rb +5 -27
- data/lib/quick_travel/version.rb +1 -1
- data/spec/adapter_spec.rb +17 -0
- data/spec/booking_spec.rb +11 -0
- data/spec/product_type_spec.rb +1 -1
- data/spec/reservation_spec.rb +4 -1
- data/spec/support/cassettes/basic_product_scheduled_trips.yml +17 -17
- data/spec/support/cassettes/basic_product_scheduled_trips_multi_sector.yml +27 -35
- data/spec/support/cassettes/basic_product_scheduled_trips_unbookable.yml +17 -17
- data/spec/support/cassettes/booking_create.yml +26 -19
- data/spec/support/cassettes/booking_documents.yml +23 -16
- data/spec/support/cassettes/booking_price_changes.yml +17 -17
- data/spec/support/cassettes/booking_show.yml +26 -19
- data/spec/support/cassettes/booking_update.yml +51 -36
- data/spec/support/cassettes/booking_with_documents.yml +58 -44
- data/spec/support/cassettes/booking_with_nested_attributes.yml +94 -73
- data/spec/support/cassettes/booking_with_price_changes.yml +33 -33
- data/spec/support/cassettes/countries.yml +17 -17
- data/spec/support/cassettes/country_all.yml +22 -15
- data/spec/support/cassettes/create_reservation_fail.yml +18 -10
- data/spec/support/cassettes/create_reservation_with_booking.yml +27 -20
- data/spec/support/cassettes/passenger_all.yml +24 -17
- data/spec/support/cassettes/payment_info.yml +18 -18
- data/spec/support/cassettes/price_quote.yml +43 -41
- data/spec/support/cassettes/product_date_range_bookability.yml +26 -16
- data/spec/support/cassettes/product_show.yml +22 -15
- data/spec/support/cassettes/product_show_as_agent.yml +18 -8
- data/spec/support/cassettes/product_type_all.yml +40 -30
- data/spec/support/cassettes/product_type_resource_categories.yml +18 -18
- data/spec/support/cassettes/product_type_resource_categories_tickets.yml +18 -18
- data/spec/support/cassettes/product_type_routes.yml +23 -23
- data/spec/support/cassettes/property.yml +21 -21
- data/spec/support/cassettes/region_show.yml +22 -15
- data/spec/support/cassettes/reservation_with_extra_picks.yml +87 -64
- data/spec/support/cassettes/resource_category_all.yml +18 -18
- data/spec/support/cassettes/resource_category_all_for_product_type_8.yml +18 -18
- data/spec/support/cassettes/resource_fare_bases.yml +29 -20
- data/spec/support/cassettes/resource_show.yml +26 -18
- data/spec/support/cassettes/resource_with_price.yml +25 -22
- data/spec/support/cassettes/tenant_switcher.yml +51 -37
- data/spec/support/cassettes/wrong_url.yml +63 -0
- data/spec/support/coverage_loader.rb +8 -3
- metadata +5 -7
- data/gemfiles/rails2.gemfile +0 -11
- data/spec/support/cassettes/resource_product_type.yml +0 -63
- data/spec/support/cassettes/route_all.yml +0 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b46659b883b055d384d0d6002646e619d636c4a4
|
4
|
+
data.tar.gz: a906274663a27d46b74eda888a5200bde90cc884
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfc223f8ec2d51dddc2974b40281cc49ff6225cbbeae35a75f18b515c8656ac0a307e3f280b57b0df5e8adad90a36b1c4674eec2b2ad2696568f5bf848c0b5d8
|
7
|
+
data.tar.gz: 381d7a52dce286c3874f17e260348b2c5c2d0c294193d4ce9226c53bc69c626a77b5f5de9919ffe248142362004ea9d8b32a5c728f0306d0b119c1e2931a6ca3
|
data/.travis.yml
CHANGED
@@ -1,24 +1,13 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
-
|
4
|
-
- 2.
|
5
|
-
- 2.3.0
|
3
|
+
- 2.2.5
|
4
|
+
- 2.3.1
|
6
5
|
script: bundle && bundle exec rake spec
|
7
6
|
gemfile:
|
8
|
-
- gemfiles/rails2.gemfile
|
9
7
|
- gemfiles/rails4.gemfile
|
10
|
-
|
11
|
-
exclude:
|
12
|
-
- rvm: 1.9
|
13
|
-
gemfile: gemfiles/rails4.gemfile
|
14
|
-
- rvm: 2.2
|
15
|
-
gemfile: gemfiles/rails2.gemfile
|
16
|
-
- rvm: 2.3.0
|
17
|
-
gemfile: gemfiles/rails2.gemfile
|
8
|
+
- gemfiles/rails5.gemfile
|
18
9
|
notifications:
|
19
10
|
email:
|
20
11
|
- support@travellink.com.au
|
21
|
-
flowdock:
|
22
|
-
secure: tIc3OVnTl83tGjhjzBSPk7AMRHVta4zAdacBDWOVA3s/YpDoa1wCMaq7xfG7GlEgHtPscvucSKbxoLocBd5d54jQVx3X9q9OrQ91D6h6tbTOK8ZTh1vTdSfMkIoxNjnVJ9KyZYJ3zy44DzfzgmcgqesshqSrXAgcpSvxkEcjAz8=
|
23
12
|
sudo: false
|
24
13
|
cache: bundler
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
This changelog adheres to [Keep a CHANGELOG](http://keepachangelog.com/).
|
5
5
|
|
6
|
+
## [2.4.0]
|
7
|
+
### Changed
|
8
|
+
- Improve error handling when non JSON response
|
9
|
+
- Update test cassettes due to API changes
|
10
|
+
- Update test data due to new bootstrap.sql
|
11
|
+
|
6
12
|
## [2.3.1]
|
7
13
|
### Fixed
|
8
14
|
- Omits empty array parameters
|
data/README.md
CHANGED
@@ -15,3 +15,13 @@ Gives models that are integrated with the QuickTravel API
|
|
15
15
|
|
16
16
|
Add to your Gemfile:
|
17
17
|
gem 'quicktravel_client'
|
18
|
+
|
19
|
+
# REGENERATE CASSETTES
|
20
|
+
|
21
|
+
In QuickTravel:
|
22
|
+
mysql quicktravel_test < ../quicktravel_test/bootstrap.sql
|
23
|
+
TIMECOP=1 QUICKTRAVEL_CONFIG_DIR=spec/support/config RAILS_ENV=test bundle exec rails s -p8080
|
24
|
+
|
25
|
+
In QuickTravel Client:
|
26
|
+
rm spec/support/cassettes/ -rf
|
27
|
+
QT_KEYS=a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2,a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2 bundle exec rspec
|
data/lib/quick_travel/adapter.rb
CHANGED
@@ -46,6 +46,34 @@ module QuickTravel
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
def self.has_many(relation_name, options = {})
|
50
|
+
define_method relation_name do
|
51
|
+
instance_variable_get("@#{relation_name}") || instance_variable_set(
|
52
|
+
"@#{relation_name}",
|
53
|
+
begin
|
54
|
+
klass = QuickTravel.const_get(options[:class_name] || relation_name.to_s.singularize.classify)
|
55
|
+
instance_variable_get("@#{relation_name}_attributes").map { |attr|
|
56
|
+
klass.new(attr)
|
57
|
+
}
|
58
|
+
end
|
59
|
+
)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.belongs_to(relation_name, options = {})
|
64
|
+
define_method relation_name do
|
65
|
+
instance_variable_get("@#{relation_name}") || instance_variable_set(
|
66
|
+
"@#{relation_name}",
|
67
|
+
begin
|
68
|
+
attrs = instance_variable_get("@#{relation_name}_attributes")
|
69
|
+
return nil unless attrs
|
70
|
+
klass = QuickTravel.const_get(options[:class_name] || relation_name.to_s.singularize.classify)
|
71
|
+
klass.new(attrs)
|
72
|
+
end
|
73
|
+
)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
49
77
|
def self.find(id, opts = {})
|
50
78
|
check_id!(id)
|
51
79
|
if lookup
|
@@ -3,13 +3,21 @@ module QuickTravel
|
|
3
3
|
attr_reader :response
|
4
4
|
|
5
5
|
def initialize(response)
|
6
|
-
@response =
|
6
|
+
@response = case response
|
7
|
+
when String
|
7
8
|
{ 'error' => response }
|
8
|
-
|
9
|
+
when HTTParty::Response
|
9
10
|
response.parsed_response
|
11
|
+
else
|
12
|
+
fail "Unexpected response type #{response.class}"\
|
13
|
+
"Should be String or HTTParty::Response"
|
10
14
|
end
|
11
15
|
|
12
|
-
error_message = @response.
|
16
|
+
error_message = if @response.is_a? Hash
|
17
|
+
@response.fetch('error', "We're sorry, but something went wrong. Please call us.")
|
18
|
+
else
|
19
|
+
@response
|
20
|
+
end
|
13
21
|
super(error_message)
|
14
22
|
end
|
15
23
|
|
data/lib/quick_travel/booking.rb
CHANGED
@@ -11,10 +11,6 @@ module QuickTravel
|
|
11
11
|
'/api/bookings'
|
12
12
|
end
|
13
13
|
|
14
|
-
def self.front_office_base
|
15
|
-
'/front_office/bookings'
|
16
|
-
end
|
17
|
-
|
18
14
|
def self.find_by_reference(reference)
|
19
15
|
find_all!("#{api_base}/reference/#{reference}.json").first
|
20
16
|
end
|
@@ -24,13 +20,11 @@ module QuickTravel
|
|
24
20
|
last_group: true, regenerate: regenerate)
|
25
21
|
end
|
26
22
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
PaymentType.find_all!("#{Booking.front_office_base}/#{@id}/payment_types.json")
|
33
|
-
end
|
23
|
+
has_many :reservations
|
24
|
+
has_many :passengers
|
25
|
+
has_many :vehicles
|
26
|
+
has_many :payments
|
27
|
+
has_many :payment_types
|
34
28
|
|
35
29
|
def on_account_payment_type
|
36
30
|
payment_types_by_code = payment_types.group_by(&:code)
|
@@ -192,18 +186,6 @@ module QuickTravel
|
|
192
186
|
Booking.find(@id) # refresh
|
193
187
|
end
|
194
188
|
|
195
|
-
# Generate passenger objects from passenger data (hash)
|
196
|
-
def passengers
|
197
|
-
@passengers ||=
|
198
|
-
@passengers_attributes.map { |passenger| Passenger.new(passenger) }
|
199
|
-
end
|
200
|
-
|
201
|
-
# Generate passenger objects from passenger data (hash)
|
202
|
-
def vehicles
|
203
|
-
@vehicles ||=
|
204
|
-
@vehicles_attributes.map { |vehicle| Vehicle.new(vehicle) }
|
205
|
-
end
|
206
|
-
|
207
189
|
def find_passenger_by_id(pid)
|
208
190
|
passengers.detect { |p| p.id.to_i == pid.to_i }
|
209
191
|
end
|
@@ -218,21 +200,6 @@ module QuickTravel
|
|
218
200
|
end
|
219
201
|
end
|
220
202
|
|
221
|
-
def vehicles_hash
|
222
|
-
@vehicles
|
223
|
-
end
|
224
|
-
|
225
|
-
# It returns booking items for a booking.
|
226
|
-
# Array of BookingItem
|
227
|
-
def reservations
|
228
|
-
fail AdapterError, 'Reservations have not been set from API' if @reservations_attributes.nil?
|
229
|
-
@_reservations_object_array ||= @reservations_attributes.map { |item| Reservation.new(item) }
|
230
|
-
end
|
231
|
-
|
232
|
-
def legacy_reservations
|
233
|
-
@_reservations_object_array = @reservations.map { |item| Reservation.new(item) }
|
234
|
-
end
|
235
|
-
|
236
203
|
def client_address
|
237
204
|
return nil unless @client_address
|
238
205
|
@client_address_object ||= Address.new(@client_address)
|
data/lib/quick_travel/payment.rb
CHANGED
@@ -7,10 +7,6 @@ module QuickTravel
|
|
7
7
|
QuickTravel::PaymentType.find(@payment_type_id)
|
8
8
|
end
|
9
9
|
|
10
|
-
def self.create(options = {})
|
11
|
-
post_and_validate("/front_office/bookings/#{options[:booking_id]}/payments.json", options)
|
12
|
-
end
|
13
|
-
|
14
10
|
def self.get_redirect_url(options)
|
15
11
|
response = get_and_validate("/api/checkouts/migs_redirect_url.json", options)
|
16
12
|
response[:redirect_url]
|
@@ -4,15 +4,12 @@ require 'quick_travel/products/base'
|
|
4
4
|
module QuickTravel
|
5
5
|
module Products
|
6
6
|
class ScheduledTrip < Base
|
7
|
+
belongs_to :to_route_stop, class_name: 'RouteStop'
|
8
|
+
belongs_to :from_route_stop, class_name: 'RouteStop'
|
9
|
+
|
7
10
|
@reservation_for_type = :scheduled_trips
|
8
11
|
|
9
|
-
def to_route_stop
|
10
|
-
RouteStop.new(@to_route_stop_attributes) if @to_route_stop_attributes
|
11
|
-
end
|
12
12
|
|
13
|
-
def from_route_stop
|
14
|
-
RouteStop.new(@from_route_stop_attributes) if @from_route_stop_attributes
|
15
|
-
end
|
16
13
|
|
17
14
|
def from_route_stop_id
|
18
15
|
return nil if from_route_stop.nil?
|
@@ -28,6 +28,7 @@ module QuickTravel
|
|
28
28
|
property = find_all!("/api/properties/#{id}.json", options).first
|
29
29
|
first_travel_date = options.fetch(:product).fetch(:first_travel_date)
|
30
30
|
property.accommodations.each do |accommodation|
|
31
|
+
# Is this right? Why is first_travel_date assumed to be cheapest
|
31
32
|
accommodation.minimum_nightly_price = accommodation.nightly_price_on first_travel_date
|
32
33
|
accommodation.minimum_price_for_duration = accommodation.minimum_price_on first_travel_date
|
33
34
|
end
|
@@ -4,6 +4,11 @@ require 'quick_travel/resource'
|
|
4
4
|
|
5
5
|
module QuickTravel
|
6
6
|
class Reservation < Adapter
|
7
|
+
has_many :adjustments
|
8
|
+
has_many :sub_reservations, class_name: 'Reservation'
|
9
|
+
belongs_to :to_route_stop, class_name: 'RouteStop'
|
10
|
+
belongs_to :from_route_stop, class_name: 'RouteStop'
|
11
|
+
|
7
12
|
def self.create(options)
|
8
13
|
json = post_and_validate('/api/reservations.json', options, expect: :json)
|
9
14
|
new(json)
|
@@ -13,10 +18,6 @@ module QuickTravel
|
|
13
18
|
delete_and_validate("/api/reservations/#{id}.json")
|
14
19
|
end
|
15
20
|
|
16
|
-
def adjustments
|
17
|
-
@adjustments_attributes.map { |adjustment| Adjustment.new(adjustment) }
|
18
|
-
end
|
19
|
-
|
20
21
|
def resource
|
21
22
|
@resource ||= QuickTravel::Resource.find(resource_id) if resource_id
|
22
23
|
end
|
@@ -29,29 +30,6 @@ module QuickTravel
|
|
29
30
|
end_time.to_time.on(last_travel_date) if end_time
|
30
31
|
end
|
31
32
|
|
32
|
-
def to_route_stop
|
33
|
-
QuickTravel::RouteStop.new(@to_route_stop_attributes) if @to_route_stop_attributes
|
34
|
-
end
|
35
|
-
|
36
|
-
def from_route_stop
|
37
|
-
QuickTravel::RouteStop.new(@from_route_stop_attributes) if @from_route_stop_attributes
|
38
|
-
end
|
39
|
-
|
40
|
-
# it send API request for Resource show. and cache the data.
|
41
|
-
# i think now this method is not required because now booking show api call have display_text for every reservation
|
42
|
-
def details
|
43
|
-
if @_resource.blank?
|
44
|
-
@_resource = Resource.find(@resource_id) unless @resource_id.blank?
|
45
|
-
end
|
46
|
-
@_resource
|
47
|
-
end
|
48
|
-
|
49
|
-
def sub_reservations
|
50
|
-
@sub_reservations ||= Array(@sub_reservations_attributes).map do |attributes|
|
51
|
-
Reservation.new(attributes)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
33
|
def passengers_count_string(booking)
|
56
34
|
passengers_count(booking).join(', ')
|
57
35
|
end
|
data/lib/quick_travel/version.rb
CHANGED
data/spec/adapter_spec.rb
CHANGED
@@ -35,4 +35,21 @@ describe QuickTravel::Adapter do
|
|
35
35
|
|
36
36
|
specify { expect(QuickTravel::Api).to have_received(:post).with(url, expected_params) }
|
37
37
|
end
|
38
|
+
|
39
|
+
context 'when response non standard' do
|
40
|
+
let(:url) { 'http://www.google.com' }
|
41
|
+
|
42
|
+
let(:adapter_response) {
|
43
|
+
VCR.use_cassette 'wrong_url' do
|
44
|
+
QuickTravel::Adapter.get_and_validate(url)
|
45
|
+
end
|
46
|
+
}
|
47
|
+
|
48
|
+
specify do
|
49
|
+
expect { adapter_response }.to raise_error(
|
50
|
+
QuickTravel::AdapterError,
|
51
|
+
/That’s all we know/
|
52
|
+
)
|
53
|
+
end
|
54
|
+
end
|
38
55
|
end
|
data/spec/booking_spec.rb
CHANGED
@@ -61,6 +61,17 @@ describe QuickTravel::Booking do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
+
it 'should be able to return its payments and payment types' do
|
65
|
+
VCR.use_cassette('booking_show') do
|
66
|
+
b = QuickTravel::Booking.find(@booking.id)
|
67
|
+
expect(b.payment_types).to be_an_instance_of Array
|
68
|
+
expect(b.payment_types.size).to eq 3
|
69
|
+
expect(b.payment_types.first).to be_an_instance_of QuickTravel::PaymentType
|
70
|
+
expect(b.payments).to be_an_instance_of Array
|
71
|
+
expect(b.payments.size).to eq 0
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
64
75
|
it 'should be able to update the booking' do
|
65
76
|
VCR.use_cassette('booking_update') do
|
66
77
|
response = @booking.update(customer_contact_name: 'John')
|
data/spec/product_type_spec.rb
CHANGED
data/spec/reservation_spec.rb
CHANGED
@@ -10,8 +10,11 @@ describe QuickTravel::Reservation do
|
|
10
10
|
first_travel_date: '2016-03-01',
|
11
11
|
passenger_types_numbers: { '1' => '2', '2' => '1' }
|
12
12
|
)
|
13
|
-
expect(reservation.booking_id).to eq
|
13
|
+
expect(reservation.booking_id).to eq 4 # based on running ALL specs
|
14
14
|
# from a fresh bootstrap.sql
|
15
|
+
# bootstrap.sql has 2 bookings
|
16
|
+
# Plus 3rd booking created in booking_spec
|
17
|
+
# Plus 4th booking created here
|
15
18
|
end
|
16
19
|
end
|
17
20
|
|
@@ -14,16 +14,6 @@ http_interactions:
|
|
14
14
|
code: 200
|
15
15
|
message: 'OK '
|
16
16
|
headers:
|
17
|
-
X-Frame-Options:
|
18
|
-
- SAMEORIGIN
|
19
|
-
X-Xss-Protection:
|
20
|
-
- '1'
|
21
|
-
X-Content-Type-Options:
|
22
|
-
- nosniff
|
23
|
-
X-Download-Options:
|
24
|
-
- noopen
|
25
|
-
X-Permitted-Cross-Domain-Policies:
|
26
|
-
- none
|
27
17
|
P3p:
|
28
18
|
- CP="IDC DSP CAO COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
|
29
19
|
Content-Type:
|
@@ -35,23 +25,33 @@ http_interactions:
|
|
35
25
|
Cache-Control:
|
36
26
|
- max-age=0, private, must-revalidate
|
37
27
|
X-Request-Id:
|
38
|
-
-
|
28
|
+
- 4aaa8ad21113c2b935ea363623ea6842
|
39
29
|
X-Runtime:
|
40
|
-
- '0.
|
30
|
+
- '0.392632'
|
41
31
|
Vary:
|
42
32
|
- Origin
|
43
33
|
Date:
|
44
|
-
-
|
34
|
+
- Fri, 01 Jan 2016 02:32:37 GMT
|
45
35
|
X-Rack-Cache:
|
46
36
|
- invalidate, pass
|
37
|
+
X-Content-Type-Options:
|
38
|
+
- nosniff
|
39
|
+
X-Download-Options:
|
40
|
+
- noopen
|
41
|
+
X-Frame-Options:
|
42
|
+
- sameorigin
|
43
|
+
X-Permitted-Cross-Domain-Policies:
|
44
|
+
- none
|
45
|
+
X-Xss-Protection:
|
46
|
+
- 1; mode=block
|
47
47
|
Server:
|
48
|
-
- WEBrick/1.3.1 (Ruby/2.2.
|
48
|
+
- WEBrick/1.3.1 (Ruby/2.2.5/2016-04-26)
|
49
49
|
Content-Length:
|
50
50
|
- '5528'
|
51
51
|
Connection:
|
52
52
|
- Keep-Alive
|
53
53
|
Set-Cookie:
|
54
|
-
-
|
54
|
+
- _quick_travel_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFVEkiJTEyMWNhOTc4YmM2Mjg2NDQ3ZjBkZjA1OWFiY2JlYzgxBjsAVEkiCXVzZXIGOwBGaQY%3D--20f11c05a3d416b3c8a1276b2ef7c06ef03bb2cd;
|
55
55
|
path=/; HttpOnly
|
56
56
|
body:
|
57
57
|
encoding: UTF-8
|
@@ -77,5 +77,5 @@ http_interactions:
|
|
77
77
|
class=\"money positive\"\u003E$40.00\u003C/span\u003E","pre_adjusted_price":"$40.00","price_breakdown":"\u003Cspan\u003E\u003Cstrong\u003EPassengers:\u003C/strong\u003E\u0026nbsp;\u003Cspan
|
78
78
|
class=\"money positive\"\u003E$40.00\u003C/span\u003E\u0026nbsp;\u003C/span\u003E","price_breakdown_passengers_in_cents":4000,"price_breakdown_vehicles_in_cents":0,"trip_id":6,"stop_departure_time":"2000-01-01T21:00:00Z","stop_arrival_time":"2000-01-01T21:45:00Z","from_route_stop_attributes":null,"to_route_stop_attributes":null,"departure_time":"2000-01-01T21:00:00Z","arrival_time":"2000-01-01T21:45:00Z"}]'
|
79
79
|
http_version:
|
80
|
-
recorded_at:
|
81
|
-
recorded_with: VCR 3.0.
|
80
|
+
recorded_at: Fri, 28 Oct 2016 05:28:13 GMT
|
81
|
+
recorded_with: VCR 3.0.3
|
@@ -14,16 +14,6 @@ http_interactions:
|
|
14
14
|
code: 200
|
15
15
|
message: 'OK '
|
16
16
|
headers:
|
17
|
-
X-Frame-Options:
|
18
|
-
- SAMEORIGIN
|
19
|
-
X-Xss-Protection:
|
20
|
-
- '1'
|
21
|
-
X-Content-Type-Options:
|
22
|
-
- nosniff
|
23
|
-
X-Download-Options:
|
24
|
-
- noopen
|
25
|
-
X-Permitted-Cross-Domain-Policies:
|
26
|
-
- none
|
27
17
|
P3p:
|
28
18
|
- CP="IDC DSP CAO COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"
|
29
19
|
Content-Type:
|
@@ -31,53 +21,55 @@ http_interactions:
|
|
31
21
|
X-Ua-Compatible:
|
32
22
|
- IE=Edge,chrome=1
|
33
23
|
Etag:
|
34
|
-
- '"
|
24
|
+
- '"05bd5d4d4ef6c4b5d312cad0ed8fc08f"'
|
35
25
|
Cache-Control:
|
36
26
|
- max-age=0, private, must-revalidate
|
37
27
|
X-Request-Id:
|
38
|
-
-
|
28
|
+
- 67e63e1e224eb5484a402505f341baf2
|
39
29
|
X-Runtime:
|
40
|
-
- '0.
|
30
|
+
- '0.235456'
|
41
31
|
Vary:
|
42
32
|
- Origin
|
43
33
|
Date:
|
44
|
-
-
|
34
|
+
- Fri, 01 Jan 2016 02:32:37 GMT
|
45
35
|
X-Rack-Cache:
|
46
36
|
- invalidate, pass
|
37
|
+
X-Content-Type-Options:
|
38
|
+
- nosniff
|
39
|
+
X-Download-Options:
|
40
|
+
- noopen
|
41
|
+
X-Frame-Options:
|
42
|
+
- sameorigin
|
43
|
+
X-Permitted-Cross-Domain-Policies:
|
44
|
+
- none
|
45
|
+
X-Xss-Protection:
|
46
|
+
- 1; mode=block
|
47
47
|
Server:
|
48
|
-
- WEBrick/1.3.1 (Ruby/2.2.
|
48
|
+
- WEBrick/1.3.1 (Ruby/2.2.5/2016-04-26)
|
49
49
|
Content-Length:
|
50
|
-
- '
|
50
|
+
- '3733'
|
51
51
|
Connection:
|
52
52
|
- Keep-Alive
|
53
53
|
Set-Cookie:
|
54
|
-
-
|
54
|
+
- _quick_travel_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFVEkiJTZhNDliNGM1YmNhNWFiMjczM2JjODMzMDFkM2U4ZThlBjsAVEkiCXVzZXIGOwBGaQY%3D--7b94523c7f150819b65217849cea43c305f4bbc8;
|
55
55
|
path=/; HttpOnly
|
56
56
|
body:
|
57
57
|
encoding: UTF-8
|
58
58
|
string: '[{"product_id":"9","product_id_field":"trip_id","resource_id":2,"resource_class_name_underscore":"scheduled_trip_resource","product_name_underscore":"mainland_coach_transfers","tariff_level_id":1,"service_ids":[25,26,27],"first_travel_date":"01-03-2016","last_travel_date":"01-03-2016","time_class":"","exception_type":null,"bookable_class":"
|
59
|
-
bookable","bookable":true,"display_text":"
|
60
|
-
up to 10mins and to be waiting in view of coach","from_label":"from","reason_unbookable":null,"service_notes":null,"booking_notes":"Advise
|
61
|
-
clients times can vary by up to 10mins and to be waiting in view of coach","adjustment_notes":null,"developer_notes":null,"inventory_type_code":"A","price_in_cents":3000,"total_price_adjustment_in_cents":0,"selection_name":"06:45am
|
59
|
+
bookable","bookable":true,"display_text":"","from_label":"from","reason_unbookable":null,"service_notes":null,"booking_notes":null,"adjustment_notes":null,"developer_notes":null,"inventory_type_code":"A","price_in_cents":3000,"total_price_adjustment_in_cents":0,"selection_name":"06:45am
|
62
60
|
- Ferry ConnectionDeparting Adelaide - AM","input_disabled":"","input_overbook":"","formatted_price":"\u003Cspan
|
63
61
|
class=\"money positive\"\u003E$30.00\u003C/span\u003E","price":"$30.00","formatted_pre_adjusted_price":"\u003Cspan
|
64
62
|
class=\"money positive\"\u003E$30.00\u003C/span\u003E","pre_adjusted_price":"$30.00","price_breakdown":"\u003Cspan\u003E\u003Cstrong\u003EPassengers:\u003C/strong\u003E\u0026nbsp;\u003Cspan
|
65
|
-
class=\"money positive\"\u003E$30.00\u003C/span\u003E\u0026nbsp;\u003C/span\u003E","price_breakdown_passengers_in_cents":3000,"price_breakdown_vehicles_in_cents":0,"trip_id":9,"stop_departure_time":"2000-01-01T06:45:00Z","stop_arrival_time":"2000-01-01T08:30:00Z","from_route_stop_attributes":{"
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
Jervis Ferry Terminal","position":10,"route_id":3,"stop_id":12,"updated_at":"2013-03-01T01:49:04+10:30"},"departure_time":"2000-01-01T06:00:00Z","arrival_time":"2000-01-01T08:30:00Z"},{"product_id":"13","product_id_field":"trip_id","resource_id":2,"resource_class_name_underscore":"scheduled_trip_resource","product_name_underscore":"mainland_coach_transfers","tariff_level_id":1,"service_ids":[28,29,30],"first_travel_date":"01-03-2016","last_travel_date":"01-03-2016","time_class":"","exception_type":null,"bookable_class":"
|
70
|
-
bookable","bookable":true,"display_text":"Advise clients times can vary by
|
71
|
-
up to 10mins and to be waiting in view of coach","from_label":"from","reason_unbookable":null,"service_notes":null,"booking_notes":"Advise
|
72
|
-
clients times can vary by up to 10mins and to be waiting in view of coach","adjustment_notes":null,"developer_notes":null,"inventory_type_code":"A","price_in_cents":3000,"total_price_adjustment_in_cents":0,"selection_name":"03:45pm
|
63
|
+
class=\"money positive\"\u003E$30.00\u003C/span\u003E\u0026nbsp;\u003C/span\u003E","price_breakdown_passengers_in_cents":3000,"price_breakdown_vehicles_in_cents":0,"trip_id":9,"stop_departure_time":"2000-01-01T06:45:00Z","stop_arrival_time":"2000-01-01T08:30:00Z","from_route_stop_attributes":{"id":5,"inventory_controlled":true,"route_id":3,"position":1,"created_at":"2013-03-01T01:49:04+10:30","updated_at":"2013-03-01T01:49:04+10:30","stop_id":3,"name":"Adelaide
|
64
|
+
Central Bus Station","code":"ACBS"},"to_route_stop_attributes":{"id":14,"inventory_controlled":true,"route_id":3,"position":10,"created_at":"2013-03-01T01:49:04+10:30","updated_at":"2013-03-01T01:49:04+10:30","stop_id":12,"name":"Cape
|
65
|
+
Jervis Ferry Terminal","code":"CPJ"},"departure_time":"2000-01-01T06:00:00Z","arrival_time":"2000-01-01T08:30:00Z"},{"product_id":"13","product_id_field":"trip_id","resource_id":2,"resource_class_name_underscore":"scheduled_trip_resource","product_name_underscore":"mainland_coach_transfers","tariff_level_id":1,"service_ids":[28,29,30],"first_travel_date":"01-03-2016","last_travel_date":"01-03-2016","time_class":"","exception_type":null,"bookable_class":"
|
66
|
+
bookable","bookable":true,"display_text":"","from_label":"from","reason_unbookable":null,"service_notes":null,"booking_notes":null,"adjustment_notes":null,"developer_notes":null,"inventory_type_code":"A","price_in_cents":3000,"total_price_adjustment_in_cents":0,"selection_name":"03:45pm
|
73
67
|
- Ferry ConnectionDeparting Adelaide - PM","input_disabled":"","input_overbook":"","formatted_price":"\u003Cspan
|
74
68
|
class=\"money positive\"\u003E$30.00\u003C/span\u003E","price":"$30.00","formatted_pre_adjusted_price":"\u003Cspan
|
75
69
|
class=\"money positive\"\u003E$30.00\u003C/span\u003E","pre_adjusted_price":"$30.00","price_breakdown":"\u003Cspan\u003E\u003Cstrong\u003EPassengers:\u003C/strong\u003E\u0026nbsp;\u003Cspan
|
76
|
-
class=\"money positive\"\u003E$30.00\u003C/span\u003E\u0026nbsp;\u003C/span\u003E","price_breakdown_passengers_in_cents":3000,"price_breakdown_vehicles_in_cents":0,"trip_id":13,"stop_departure_time":"2000-01-01T15:45:00Z","stop_arrival_time":"2000-01-01T17:30:00Z","from_route_stop_attributes":{"
|
77
|
-
|
78
|
-
|
79
|
-
Road, Cape Jervis","code":"CPJ","created_at":"2013-03-01T01:49:04+10:30","id":14,"inventory_controlled":true,"name":"Cape
|
80
|
-
Jervis Ferry Terminal","position":10,"route_id":3,"stop_id":12,"updated_at":"2013-03-01T01:49:04+10:30"},"departure_time":"2000-01-01T15:00:00Z","arrival_time":"2000-01-01T17:30:00Z"}]'
|
70
|
+
class=\"money positive\"\u003E$30.00\u003C/span\u003E\u0026nbsp;\u003C/span\u003E","price_breakdown_passengers_in_cents":3000,"price_breakdown_vehicles_in_cents":0,"trip_id":13,"stop_departure_time":"2000-01-01T15:45:00Z","stop_arrival_time":"2000-01-01T17:30:00Z","from_route_stop_attributes":{"id":5,"inventory_controlled":true,"route_id":3,"position":1,"created_at":"2013-03-01T01:49:04+10:30","updated_at":"2013-03-01T01:49:04+10:30","stop_id":3,"name":"Adelaide
|
71
|
+
Central Bus Station","code":"ACBS"},"to_route_stop_attributes":{"id":14,"inventory_controlled":true,"route_id":3,"position":10,"created_at":"2013-03-01T01:49:04+10:30","updated_at":"2013-03-01T01:49:04+10:30","stop_id":12,"name":"Cape
|
72
|
+
Jervis Ferry Terminal","code":"CPJ"},"departure_time":"2000-01-01T15:00:00Z","arrival_time":"2000-01-01T17:30:00Z"}]'
|
81
73
|
http_version:
|
82
|
-
recorded_at:
|
83
|
-
recorded_with: VCR 3.0.
|
74
|
+
recorded_at: Fri, 28 Oct 2016 05:28:14 GMT
|
75
|
+
recorded_with: VCR 3.0.3
|