bookingsync-api 0.0.36 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f78c9f39fe600e7812b5829fb2379b11085ea364
4
- data.tar.gz: 19939d495c4e3930ea13e057d74dbf0df4cc4106
3
+ metadata.gz: 791a70ff288a995656ed021019811a153c09bbd0
4
+ data.tar.gz: f55cf148e2733e12ec2796735048b66ff0c04b74
5
5
  SHA512:
6
- metadata.gz: 509be945f0bccf83b01a1e3d6d71ef65c4a127092d6e845788eaf2884201d8c5e4ddafb614f57747420897aabf4144aba2f72fb0031a72cdf9d92a43f6fa61ad
7
- data.tar.gz: 6fcf622f86b47954ac6e3bd42082ea844d67d73cdb038f21fcbbd466e7b1cdea2a7fd84701d71475950292083497be509fa1130892e43d614003405bd2bc061b
6
+ metadata.gz: e65b235c91d8c111565be32d5550ea1b1e0ecec399c1d094211dc06737e1b4096a840ed58dc3b812565b672009a8bbb6283edb497f276de04f0d8a76c086c102
7
+ data.tar.gz: c482ab2587d45b767be5cdb58b8ff687b245e4beb999b119bbbae6370da1b74ddbd306bf584212cd0a01926d94d86c19514e032560894446af1cbab5fc7ef6e0
@@ -1,8 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "1.9.3"
4
- - "2.0"
5
3
  - "2.1"
6
4
  - "2.2"
7
5
  before_install:
8
- - gem install bundler -v 1.11.2
6
+ - gem install bundler -v 1.12.5
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## master
4
4
 
5
+ ## 0.1.0
6
+
7
+ - Drop support for Ruby 1.9.3 and Ruby 2.0.x
8
+ - Add support for pagination with POST method
9
+ - Use POST pagination for `rentals_search` by default
10
+
5
11
  ## 0.0.36
6
12
 
7
13
  - Add support for `booking_comments`.
data/Gemfile CHANGED
@@ -11,6 +11,7 @@ group 'test' do
11
11
  gem 'yard'
12
12
  gem 'ruby_gntp'
13
13
  gem 'pry'
14
+ gem 'listen', '~> 3.0.0'
14
15
  end
15
16
 
16
17
  gemspec
@@ -183,7 +183,7 @@ module BookingSync::API
183
183
  end
184
184
  end
185
185
 
186
- # Make a HTTP GET request to a path with pagination support.
186
+ # Make a HTTP GET or POST request to a path with pagination support.
187
187
  #
188
188
  # @param options [Hash]
189
189
  # @option options [Integer] per_page: Number of resources per page
@@ -196,7 +196,12 @@ module BookingSync::API
196
196
  def paginate(path, options = {}, &block)
197
197
  instrument("paginate.bookingsync_api", path: path) do
198
198
  auto_paginate = options.delete(:auto_paginate)
199
- response = call(:get, path, query: options)
199
+ request_method = options.delete(:request_method) || :get
200
+ if request_method == :get
201
+ response = call(request_method, path, query: options)
202
+ else
203
+ response = call(request_method, path, options)
204
+ end
200
205
  data = response.resources.dup
201
206
 
202
207
  if (block_given? or auto_paginate) && response.relations[:next]
@@ -209,7 +214,7 @@ module BookingSync::API
209
214
  first_request = false
210
215
  end
211
216
  break unless response.relations[:next]
212
- response = response.relations[:next].get
217
+ response = response.relations[:next].call({}, method: request_method)
213
218
  end
214
219
  end
215
220
 
@@ -229,7 +234,7 @@ module BookingSync::API
229
234
  instrument("call.bookingsync_api", method: method, path: path) do
230
235
  if [:get, :head].include?(method)
231
236
  options = data
232
- data = nil
237
+ data = {}
233
238
  end
234
239
  options ||= {}
235
240
  options[:headers] ||= {}
@@ -31,7 +31,8 @@ module BookingSync::API
31
31
  def rentals_search(options = {}, &block)
32
32
  ids = Array(options.delete(:ids))
33
33
  path = ["rentals", ids.join(","), "search"].compact.join("/")
34
- paginate path, options, &block
34
+ defaults = { request_method: :post }
35
+ paginate path, defaults.merge(options), &block
35
36
  end
36
37
 
37
38
  # Get a single rental
@@ -82,4 +83,4 @@ module BookingSync::API
82
83
  end
83
84
  end
84
85
  end
85
- end
86
+ end
@@ -11,11 +11,9 @@ module BookingSync::API
11
11
  # @param links [Hash] Hash of relation_name => relation options.
12
12
  # @return [Hash] Hash of relation_name => relation elements.
13
13
  def self.from_links(client, links)
14
- relations = {}
15
- links.each do |name, options|
14
+ links.to_h.each_with_object({}) do |(name, options), relations|
16
15
  relations[name] = from_link(client, name, options)
17
- end if links
18
- relations
16
+ end
19
17
  end
20
18
 
21
19
  # Build a single Relation from the given options.
@@ -50,7 +48,6 @@ module BookingSync::API
50
48
  @href = href
51
49
  @href_template = ::Addressable::Template.new(href.to_s)
52
50
  @method = (method || :get).to_sym
53
- @available_methods = Set.new methods || [@method]
54
51
  end
55
52
 
56
53
  # Make an API request with the curent Relation using GET.
@@ -60,15 +57,19 @@ module BookingSync::API
60
57
  # @option options [Hash] query: Hash of URL query params to set.
61
58
  # @option options [Symbol] method: Symbol HTTP method.
62
59
  # @return [BookingSync::API::Response] A response
63
- def get(options = nil)
64
- options ||= {}
65
- options[:method] = :get
66
- call options
60
+ def get(data = {})
61
+ call data, method: :get
67
62
  end
68
63
 
69
- def href(options = nil)
70
- return @href if @href_template.nil?
71
- @href_template.expand(options || {}).to_s
64
+ # Make an API request with the curent Relation using POST.
65
+ #
66
+ # @param options [Hash] Options to configure the API request.
67
+ # @option options [Hash] headers: Hash of API headers to set.
68
+ # @option options [Hash] query: Hash of URL query params to set.
69
+ # @option options [Symbol] method: Symbol HTTP method.
70
+ # @return [BookingSync::API::Response] A response
71
+ def post(data = {})
72
+ call data, method: :post
72
73
  end
73
74
 
74
75
  # Make an API request with the curent Relation.
@@ -81,9 +82,19 @@ module BookingSync::API
81
82
  # @option options [Hash] query: Hash of URL query params to set.
82
83
  # @option options [Symbol] method: Symbol HTTP method.
83
84
  # @return [BookingSync::API::Response]
84
- def call(data = nil, options = nil)
85
- m = options && options[:method]
86
- @client.call m || @method, @href_template, data, options || {}
85
+ def call(data = {}, options = {})
86
+ m = options.delete(:method)
87
+ client.call m || method, href_template, data, options
88
+ end
89
+
90
+ # Return expanded URL
91
+
92
+ # @param options [Hash] Params to be included in expanded URL
93
+ # @return [String] expanded URL
94
+
95
+ def href(options = {})
96
+ return @href if @href_template.nil?
97
+ @href_template.expand(options.to_h).to_s
87
98
  end
88
99
  end
89
100
  end
@@ -1,5 +1,5 @@
1
1
  module BookingSync
2
2
  module API
3
- VERSION = "0.0.36"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -25,18 +25,28 @@ describe BookingSync::API::Client::Rentals do
25
25
 
26
26
  describe ".rentals_search", :vcr do
27
27
  it "returns rentals" do
28
- expect(client.rentals_search(start_at: "2014-06-20", end_at: "2014-06-25")).not_to be_empty
29
- assert_requested :get, bs_url("rentals/search?start_at=2014-06-20&end_at=2014-06-25")
28
+ expect(client.rentals_search(start_at: "2016-06-15", end_at: "2016-06-30")).not_to be_empty
29
+ assert_requested :post, bs_url("rentals/search"),
30
+ body: { start_at: "2016-06-15", end_at: "2016-06-30" }.to_json
30
31
  end
31
32
 
32
33
  context "rentals ids given" do
33
34
  it "makes a search within given rentals" do
34
- rentals = client.rentals_search(ids: [323, 354], max_price: 400,
35
- start_at: "2014-06-20", end_at: "2014-06-25")
35
+ rentals = client.rentals_search(ids: [1, 5], start_at: "2016-06-15", end_at: "2016-06-30")
36
36
  expect(rentals.size).to eq(1)
37
- assert_requested :get, bs_url("rentals/323,354/search?max_price=400&start_at=2014-06-20&end_at=2014-06-25")
37
+ assert_requested :post, bs_url("rentals/1,5/search"),
38
+ body: { start_at: "2016-06-15", end_at: "2016-06-30" }.to_json
38
39
  end
39
40
  end
41
+
42
+ it "performs autopagination using POST" do
43
+ rentals = client.rentals_search(per_page: 1, auto_paginate: true)
44
+ expect(rentals.size).to eq(4)
45
+ assert_requested :post, bs_url("rentals/search"), body: { per_page: 1 }.to_json
46
+ assert_requested :post, bs_url("rentals/search?page=2&per_page=1")
47
+ assert_requested :post, bs_url("rentals/search?page=3&per_page=1")
48
+ assert_requested :post, bs_url("rentals/search?page=4&per_page=1")
49
+ end
40
50
  end
41
51
 
42
52
  describe ".rental", :vcr do
@@ -25,24 +25,31 @@ describe BookingSync::API::Relation do
25
25
  end
26
26
  end
27
27
 
28
- describe "#call" do
29
- let(:client) { double(BookingSync::API::Client) }
30
-
31
- it "makes HTTP request using API client" do
28
+ describe "#get" do
29
+ it "makes a HTTP GET request using call on client" do
32
30
  url_template = ::Addressable::Template.new("http://example.com/photos/{foo.photos}")
33
- expect(client).to receive(:call).with(:get, url_template, nil, {})
34
- relation.call
31
+ expect(client).to receive(:call).with(:get, url_template, {fields: [:name, :description]}, {})
32
+ relation.get(fields: [:name, :description])
35
33
  end
36
34
  end
37
35
 
38
- describe "#get" do
39
- it "makes a HTTP GET using call on relation" do
36
+ describe "#post" do
37
+ it "makes a HTTP POST request using call on client" do
40
38
  url_template = ::Addressable::Template.new("http://example.com/photos/{foo.photos}")
41
- expect(relation).to receive(:call).with({fields: [:name, :description], method: :get})
42
- relation.get(fields: [:name, :description])
39
+ expect(client).to receive(:call).with(:post, url_template, {fields: [:name, :description]}, {})
40
+ relation.post(fields: [:name, :description])
43
41
  end
44
42
  end
45
43
 
44
+ describe "#call" do
45
+ let(:client) { double(BookingSync::API::Client) }
46
+
47
+ it "makes HTTP request using API client" do
48
+ url_template = ::Addressable::Template.new("http://example.com/photos/{foo.photos}")
49
+ expect(client).to receive(:call).with(:get, url_template, {}, {})
50
+ relation.call
51
+ end
52
+ end
46
53
 
47
54
  describe "#name" do
48
55
  it "returns relation name" do
@@ -0,0 +1,293 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://www.bookingsync.com/api/v3/rentals/search
6
+ body:
7
+ encoding: UTF-8
8
+ string: '{"per_page":1}'
9
+ headers:
10
+ User-Agent:
11
+ - BookingSync API gem v0.0.36
12
+ Accept:
13
+ - application/vnd.api+json
14
+ Content-Type:
15
+ - application/vnd.api+json
16
+ Authorization:
17
+ - Bearer <<ACCESS_TOKEN>>
18
+ Accept-Encoding:
19
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ X-Xss-Protection:
28
+ - 1; mode=block
29
+ X-Content-Type-Options:
30
+ - nosniff
31
+ X-Ratelimit-Limit:
32
+ - '1000'
33
+ X-Ratelimit-Reset:
34
+ - '1465578000'
35
+ X-Ratelimit-Remaining:
36
+ - '994'
37
+ Link:
38
+ - <https://www.bookingsync.com/api/v3/rentals/search?page=1&per_page=1>; rel="first",
39
+ <https://www.bookingsync.com/api/v3/rentals/search?page=2&per_page=1>; rel="next",
40
+ <https://www.bookingsync.com/api/v3/rentals/search?page=4&per_page=1>; rel="last"
41
+ X-Total-Pages:
42
+ - '4'
43
+ X-Total-Count:
44
+ - '4'
45
+ X-Per-Page:
46
+ - '1'
47
+ Content-Type:
48
+ - application/vnd.api+json; charset=utf-8
49
+ Etag:
50
+ - '"6086ae8645789e508c72b4059c55dd0f"'
51
+ Cache-Control:
52
+ - max-age=0, private, must-revalidate
53
+ P3p:
54
+ - CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
55
+ OUR SAMi OTRo UNRo PUBi IND UNI STA"
56
+ Set-Cookie:
57
+ - ahoy_track=true; path=/
58
+ - ahoy_visit=ae0d9abc-7e07-47bc-ae70-c1fb554607aa; path=/; expires=Fri, 17 Jun
59
+ 2016 16:03:21 -0000
60
+ - ahoy_visitor=4b2d5579-802d-4483-b4da-37cbe4af7a68; path=/; expires=Sun, 10
61
+ Jun 2018 16:03:21 -0000
62
+ X-Request-Id:
63
+ - 52fb60fa-59db-4a9b-9b15-4309124a3245
64
+ X-Runtime:
65
+ - '0.652057'
66
+ Date:
67
+ - Fri, 10 Jun 2016 16:03:21 GMT
68
+ Connection:
69
+ - close
70
+ body:
71
+ encoding: UTF-8
72
+ string: '{"links":{"rentals.rentals_fees":"https://www.bookingsync.com/api/v3/rentals_fees/{rentals.rentals_fees}"},"rentals":[{"links":{"rentals_fees":[6,1,3]},"id":1,"currency":"EUR","initial_price":null,"final_price":null,"updated_at":"2016-06-10T15:32:54Z","taxes":[],"price_details":{"taxes":[],"fees":[]},"price_to_pay_now":null}]}'
73
+ http_version:
74
+ recorded_at: Fri, 10 Jun 2016 16:03:21 GMT
75
+ - request:
76
+ method: post
77
+ uri: https://www.bookingsync.com/api/v3/rentals/search?page=2&per_page=1
78
+ body:
79
+ encoding: UTF-8
80
+ string: "{}"
81
+ headers:
82
+ User-Agent:
83
+ - BookingSync API gem v0.0.36
84
+ Accept:
85
+ - application/vnd.api+json
86
+ Content-Type:
87
+ - application/vnd.api+json
88
+ Authorization:
89
+ - Bearer <<ACCESS_TOKEN>>
90
+ Accept-Encoding:
91
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
92
+ response:
93
+ status:
94
+ code: 200
95
+ message: OK
96
+ headers:
97
+ X-Frame-Options:
98
+ - SAMEORIGIN
99
+ X-Xss-Protection:
100
+ - 1; mode=block
101
+ X-Content-Type-Options:
102
+ - nosniff
103
+ X-Ratelimit-Limit:
104
+ - '1000'
105
+ X-Ratelimit-Reset:
106
+ - '1465578000'
107
+ X-Ratelimit-Remaining:
108
+ - '993'
109
+ Link:
110
+ - <https://www.bookingsync.com/api/v3/rentals/search?page=1&per_page=1>; rel="first",
111
+ <https://www.bookingsync.com/api/v3/rentals/search?page=1&per_page=1>; rel="prev",
112
+ <https://www.bookingsync.com/api/v3/rentals/search?page=3&per_page=1>; rel="next",
113
+ <https://www.bookingsync.com/api/v3/rentals/search?page=4&per_page=1>; rel="last"
114
+ X-Total-Pages:
115
+ - '4'
116
+ X-Total-Count:
117
+ - '4'
118
+ X-Per-Page:
119
+ - '1'
120
+ Content-Type:
121
+ - application/vnd.api+json; charset=utf-8
122
+ Etag:
123
+ - '"548ee359e03a5cfe1365e07970e796b9"'
124
+ Cache-Control:
125
+ - max-age=0, private, must-revalidate
126
+ P3p:
127
+ - CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
128
+ OUR SAMi OTRo UNRo PUBi IND UNI STA"
129
+ Set-Cookie:
130
+ - ahoy_track=true; path=/
131
+ - ahoy_visit=53c6ecd7-0735-453a-ad1f-a53cf26dc7cc; path=/; expires=Fri, 17 Jun
132
+ 2016 16:03:21 -0000
133
+ - ahoy_visitor=8a5fec08-a9db-4ccf-9a20-950bd08eb783; path=/; expires=Sun, 10
134
+ Jun 2018 16:03:21 -0000
135
+ X-Request-Id:
136
+ - 05c66d45-0073-49e9-b3f6-8352029aa530
137
+ X-Runtime:
138
+ - '0.572418'
139
+ Date:
140
+ - Fri, 10 Jun 2016 16:03:22 GMT
141
+ Connection:
142
+ - close
143
+ body:
144
+ encoding: UTF-8
145
+ string: '{"links":{"rentals.rentals_fees":"https://www.bookingsync.com/api/v3/rentals_fees/{rentals.rentals_fees}"},"rentals":[{"links":{"rentals_fees":[8,7]},"id":2,"currency":"EUR","initial_price":null,"final_price":null,"updated_at":"2016-06-10T15:37:12Z","taxes":[],"price_details":{"taxes":[],"fees":[]},"price_to_pay_now":null}]}'
146
+ http_version:
147
+ recorded_at: Fri, 10 Jun 2016 16:03:22 GMT
148
+ - request:
149
+ method: post
150
+ uri: https://www.bookingsync.com/api/v3/rentals/search?page=3&per_page=1
151
+ body:
152
+ encoding: UTF-8
153
+ string: "{}"
154
+ headers:
155
+ User-Agent:
156
+ - BookingSync API gem v0.0.36
157
+ Accept:
158
+ - application/vnd.api+json
159
+ Content-Type:
160
+ - application/vnd.api+json
161
+ Authorization:
162
+ - Bearer <<ACCESS_TOKEN>>
163
+ Accept-Encoding:
164
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
165
+ response:
166
+ status:
167
+ code: 200
168
+ message: OK
169
+ headers:
170
+ X-Frame-Options:
171
+ - SAMEORIGIN
172
+ X-Xss-Protection:
173
+ - 1; mode=block
174
+ X-Content-Type-Options:
175
+ - nosniff
176
+ X-Ratelimit-Limit:
177
+ - '1000'
178
+ X-Ratelimit-Reset:
179
+ - '1465578000'
180
+ X-Ratelimit-Remaining:
181
+ - '992'
182
+ Link:
183
+ - <https://www.bookingsync.com/api/v3/rentals/search?page=1&per_page=1>; rel="first",
184
+ <https://www.bookingsync.com/api/v3/rentals/search?page=2&per_page=1>; rel="prev",
185
+ <https://www.bookingsync.com/api/v3/rentals/search?page=4&per_page=1>; rel="next",
186
+ <https://www.bookingsync.com/api/v3/rentals/search?page=4&per_page=1>; rel="last"
187
+ X-Total-Pages:
188
+ - '4'
189
+ X-Total-Count:
190
+ - '4'
191
+ X-Per-Page:
192
+ - '1'
193
+ Content-Type:
194
+ - application/vnd.api+json; charset=utf-8
195
+ Etag:
196
+ - '"3bb7f13b08dc543ba66e990d61fbca25"'
197
+ Cache-Control:
198
+ - max-age=0, private, must-revalidate
199
+ P3p:
200
+ - CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
201
+ OUR SAMi OTRo UNRo PUBi IND UNI STA"
202
+ Set-Cookie:
203
+ - ahoy_track=true; path=/
204
+ - ahoy_visit=8b53ff2d-0b0d-405a-acac-4dec612ac439; path=/; expires=Fri, 17 Jun
205
+ 2016 16:03:22 -0000
206
+ - ahoy_visitor=f64c95f4-5a9a-4b1b-b3a0-78b8fbfbd6d0; path=/; expires=Sun, 10
207
+ Jun 2018 16:03:22 -0000
208
+ X-Request-Id:
209
+ - 0fa63435-6dc3-44da-ad2e-6f61ac59fc17
210
+ X-Runtime:
211
+ - '0.652436'
212
+ Date:
213
+ - Fri, 10 Jun 2016 16:03:23 GMT
214
+ Connection:
215
+ - close
216
+ body:
217
+ encoding: UTF-8
218
+ string: '{"links":{"rentals.rentals_fees":"https://www.bookingsync.com/api/v3/rentals_fees/{rentals.rentals_fees}"},"rentals":[{"links":{"rentals_fees":[30,29]},"id":3,"currency":"USD","initial_price":null,"final_price":null,"updated_at":"2016-06-10T15:37:25Z","taxes":[],"price_details":{"taxes":[],"fees":[]},"price_to_pay_now":null}]}'
219
+ http_version:
220
+ recorded_at: Fri, 10 Jun 2016 16:03:23 GMT
221
+ - request:
222
+ method: post
223
+ uri: https://www.bookingsync.com/api/v3/rentals/search?page=4&per_page=1
224
+ body:
225
+ encoding: UTF-8
226
+ string: "{}"
227
+ headers:
228
+ User-Agent:
229
+ - BookingSync API gem v0.0.36
230
+ Accept:
231
+ - application/vnd.api+json
232
+ Content-Type:
233
+ - application/vnd.api+json
234
+ Authorization:
235
+ - Bearer <<ACCESS_TOKEN>>
236
+ Accept-Encoding:
237
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
238
+ response:
239
+ status:
240
+ code: 200
241
+ message: OK
242
+ headers:
243
+ X-Frame-Options:
244
+ - SAMEORIGIN
245
+ X-Xss-Protection:
246
+ - 1; mode=block
247
+ X-Content-Type-Options:
248
+ - nosniff
249
+ X-Ratelimit-Limit:
250
+ - '1000'
251
+ X-Ratelimit-Reset:
252
+ - '1465578000'
253
+ X-Ratelimit-Remaining:
254
+ - '991'
255
+ Link:
256
+ - <https://www.bookingsync.com/api/v3/rentals/search?page=1&per_page=1>; rel="first",
257
+ <https://www.bookingsync.com/api/v3/rentals/search?page=3&per_page=1>; rel="prev",
258
+ <https://www.bookingsync.com/api/v3/rentals/search?page=4&per_page=1>; rel="last"
259
+ X-Total-Pages:
260
+ - '4'
261
+ X-Total-Count:
262
+ - '4'
263
+ X-Per-Page:
264
+ - '1'
265
+ Content-Type:
266
+ - application/vnd.api+json; charset=utf-8
267
+ Etag:
268
+ - '"ec22e49e518880ca8238747be3b5be33"'
269
+ Cache-Control:
270
+ - max-age=0, private, must-revalidate
271
+ P3p:
272
+ - CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
273
+ OUR SAMi OTRo UNRo PUBi IND UNI STA"
274
+ Set-Cookie:
275
+ - ahoy_track=true; path=/
276
+ - ahoy_visit=e8410cd4-d8ef-4300-9f74-39de88ab5c91; path=/; expires=Fri, 17 Jun
277
+ 2016 16:03:23 -0000
278
+ - ahoy_visitor=67c3a830-640f-4c37-b4a6-fbcc016daf39; path=/; expires=Sun, 10
279
+ Jun 2018 16:03:23 -0000
280
+ X-Request-Id:
281
+ - 01caa49a-69c8-47b5-92ea-88c3d8d35d39
282
+ X-Runtime:
283
+ - '0.602880'
284
+ Date:
285
+ - Fri, 10 Jun 2016 16:03:23 GMT
286
+ Connection:
287
+ - close
288
+ body:
289
+ encoding: UTF-8
290
+ string: '{"links":{"rentals.rentals_fees":"https://www.bookingsync.com/api/v3/rentals_fees/{rentals.rentals_fees}"},"rentals":[{"links":{"rentals_fees":[]},"id":154,"currency":null,"initial_price":null,"final_price":null,"updated_at":"2016-06-07T11:00:34Z","taxes":[],"price_details":{"taxes":[],"fees":[]},"price_to_pay_now":null}]}'
291
+ http_version:
292
+ recorded_at: Fri, 10 Jun 2016 16:03:23 GMT
293
+ recorded_with: VCR 2.9.3
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  http_interactions:
3
3
  - request:
4
- method: get
5
- uri: https://www.bookingsync.com/api/v3/rentals/323,354/search?end_at=2014-06-25&max_price=400&start_at=2014-06-20
4
+ method: post
5
+ uri: http://bookingsync.dev/api/v3/rentals/1,5/search
6
6
  body:
7
- encoding: US-ASCII
8
- string: ''
7
+ encoding: UTF-8
8
+ string: '{"start_at":"2016-06-15","end_at":"2016-06-30"}'
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.9.0
11
+ - BookingSync API gem v0.0.36
12
12
  Accept:
13
13
  - application/vnd.api+json
14
14
  Content-Type:
@@ -22,44 +22,50 @@ http_interactions:
22
22
  code: 200
23
23
  message: OK
24
24
  headers:
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ X-Xss-Protection:
28
+ - 1; mode=block
29
+ X-Content-Type-Options:
30
+ - nosniff
25
31
  X-Ratelimit-Limit:
26
32
  - '1000'
27
33
  X-Ratelimit-Reset:
28
- - '1403028000'
34
+ - '1465574400'
29
35
  X-Ratelimit-Remaining:
30
- - '716'
31
- Link:
32
- - <https://www.bookingsync.com/api/v3/rentals/323,354/search?end_at=2014-06-25&max_price=400&page=1&start_at=2014-06-20>;
33
- rel="first", <https://www.bookingsync.com/api/v3/rentals/323,354/search?end_at=2014-06-25&max_price=400&page=1&start_at=2014-06-20>;
34
- rel="last"
35
- X-Total-Pages:
36
- - '1'
37
- Access-Control-Allow-Origin:
38
- - "*"
39
- Access-Control-Request-Method:
40
- - "*"
36
+ - '992'
41
37
  Content-Type:
42
38
  - application/vnd.api+json; charset=utf-8
43
- X-Ua-Compatible:
44
- - IE=Edge
45
39
  Etag:
46
- - '"621224e07863a6f1e9608a835a0b976f"'
40
+ - '"c98c554a9f7cf1fee44953129a5e8df5"'
47
41
  Cache-Control:
48
42
  - max-age=0, private, must-revalidate
49
43
  P3p:
50
44
  - CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
51
45
  OUR SAMi OTRo UNRo PUBi IND UNI STA"
46
+ Set-Cookie:
47
+ - ahoy_track=true; path=/
48
+ - ahoy_visit=8f1a606c-9274-431c-8253-d12c45b0bc0a; path=/; expires=Fri, 17 Jun
49
+ 2016 15:33:21 -0000
50
+ - ahoy_visitor=8f727d5f-a25b-4b93-85c6-930a20d22712; path=/; expires=Sun, 10
51
+ Jun 2018 15:33:21 -0000
52
52
  X-Request-Id:
53
- - 84607d0b92d57200601605f351b0dda8
53
+ - 51f0efed-3c73-405c-b9ce-910edee3d546
54
54
  X-Runtime:
55
- - '0.063413'
55
+ - '0.324886'
56
56
  Date:
57
- - Tue, 17 Jun 2014 17:49:24 GMT
57
+ - Fri, 10 Jun 2016 15:33:22 GMT
58
58
  Connection:
59
59
  - close
60
60
  body:
61
61
  encoding: UTF-8
62
- string: '{"rentals":[{"id":323,"initial_price":342,"final_price":342,"updated_at":"2014-06-17T08:32:59Z"}]}'
63
- http_version:
64
- recorded_at: Tue, 17 Jun 2014 17:49:24 GMT
65
- recorded_with: VCR 2.9.0
62
+ string: '{"links":{"rentals.rentals_fees":"http://bookingsync.dev/api/v3/rentals_fees/{rentals.rentals_fees}"},"rentals":[{"links":{"rentals_fees":[6,1,3]},"id":1,"currency":"EUR","initial_price":1094.4,"final_price":3979.69,"updated_at":"2016-06-10T15:32:54Z","taxes":[{"name":{"fr":"VAT
63
+ fr","en":"VAT"},"percentage":"23.0","amount":"686.49"}],"price_details":{"taxes":[{"name":{"fr":"VAT
64
+ fr","en":"VAT"},"percentage":"23.0","amount":"228.83","taxable_type":"Rental","taxable_id":1,"tax_id":1,"included":false},{"name":{"fr":"z
65
+ other FR","en":"other"},"percentage":"10.0","amount":"99.49","taxable_type":"Rental","taxable_id":1,"tax_id":2,"included":true},{"name":{"fr":"VAT
66
+ fr","en":"VAT"},"percentage":"23.0","amount":"457.66","taxable_type":"Fee","taxable_id":2,"tax_id":1,"included":false},{"name":{"fr":"z
67
+ other FR","en":"other"},"percentage":"10.0","amount":"198.98","taxable_type":"Fee","taxable_id":2,"tax_id":2,"included":true}],"fees":[{"name":{"fr":"whatever
68
+ car","en":"Car"},"required":true,"price":"2188.8","quantity":1,"id":2,"rentals_fee_id":1},{"name":{"fr":"","en":"whatever"},"required":true,"price":"10.0","quantity":1,"id":5,"rentals_fee_id":3}]},"price_to_pay_now":3979.69}]}'
69
+ http_version:
70
+ recorded_at: Fri, 10 Jun 2016 15:33:22 GMT
71
+ recorded_with: VCR 2.9.3
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  http_interactions:
3
3
  - request:
4
- method: get
5
- uri: https://www.bookingsync.com/api/v3/rentals/search?end_at=2014-06-25&start_at=2014-06-20
4
+ method: post
5
+ uri: http://bookingsync.dev/api/v3/rentals/search
6
6
  body:
7
- encoding: US-ASCII
8
- string: ''
7
+ encoding: UTF-8
8
+ string: '{"start_at":"2016-06-15","end_at":"2016-06-30"}'
9
9
  headers:
10
10
  User-Agent:
11
- - Faraday v0.9.0
11
+ - BookingSync API gem v0.0.36
12
12
  Accept:
13
13
  - application/vnd.api+json
14
14
  Content-Type:
@@ -22,44 +22,50 @@ http_interactions:
22
22
  code: 200
23
23
  message: OK
24
24
  headers:
25
+ X-Frame-Options:
26
+ - SAMEORIGIN
27
+ X-Xss-Protection:
28
+ - 1; mode=block
29
+ X-Content-Type-Options:
30
+ - nosniff
25
31
  X-Ratelimit-Limit:
26
32
  - '1000'
27
33
  X-Ratelimit-Reset:
28
- - '1403028000'
34
+ - '1465574400'
29
35
  X-Ratelimit-Remaining:
30
- - '717'
31
- Link:
32
- - <https://www.bookingsync.com/api/v3/rentals/search?end_at=2014-06-25&page=1&start_at=2014-06-20>;
33
- rel="first", <https://www.bookingsync.com/api/v3/rentals/search?end_at=2014-06-25&page=1&start_at=2014-06-20>;
34
- rel="last"
35
- X-Total-Pages:
36
- - '1'
37
- Access-Control-Allow-Origin:
38
- - "*"
39
- Access-Control-Request-Method:
40
- - "*"
36
+ - '990'
41
37
  Content-Type:
42
38
  - application/vnd.api+json; charset=utf-8
43
- X-Ua-Compatible:
44
- - IE=Edge
45
39
  Etag:
46
- - '"6ed7d26a9782534dad8efc565fa7e1ee"'
40
+ - '"c98c554a9f7cf1fee44953129a5e8df5"'
47
41
  Cache-Control:
48
42
  - max-age=0, private, must-revalidate
49
43
  P3p:
50
44
  - CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
51
45
  OUR SAMi OTRo UNRo PUBi IND UNI STA"
46
+ Set-Cookie:
47
+ - ahoy_track=true; path=/
48
+ - ahoy_visit=ca5992fc-a552-4b8c-982d-ce80dd953aa7; path=/; expires=Fri, 17 Jun
49
+ 2016 15:35:58 -0000
50
+ - ahoy_visitor=0a766d1d-8868-4620-88e0-89d1d867b395; path=/; expires=Sun, 10
51
+ Jun 2018 15:35:58 -0000
52
52
  X-Request-Id:
53
- - cb7f942c7834f550641d3323aed451f6
53
+ - 3e07fee8-683c-4716-8c83-1857d725f6c7
54
54
  X-Runtime:
55
- - '0.093222'
55
+ - '0.327679'
56
56
  Date:
57
- - Tue, 17 Jun 2014 17:49:24 GMT
57
+ - Fri, 10 Jun 2016 15:35:59 GMT
58
58
  Connection:
59
59
  - close
60
60
  body:
61
61
  encoding: UTF-8
62
- string: '{"rentals":[{"id":323,"initial_price":342,"final_price":342,"updated_at":"2014-06-17T08:32:59Z"},{"id":379,"initial_price":385,"final_price":385,"updated_at":"2014-06-17T08:33:00Z"},{"id":386,"initial_price":428,"final_price":428,"updated_at":"2014-06-17T08:33:00Z"},{"id":367,"initial_price":450,"final_price":450,"updated_at":"2014-06-17T08:33:00Z"},{"id":354,"initial_price":571,"final_price":571,"updated_at":"2014-06-17T08:33:00Z"}]}'
63
- http_version:
64
- recorded_at: Tue, 17 Jun 2014 17:49:24 GMT
65
- recorded_with: VCR 2.9.0
62
+ string: '{"links":{"rentals.rentals_fees":"http://bookingsync.dev/api/v3/rentals_fees/{rentals.rentals_fees}"},"rentals":[{"links":{"rentals_fees":[6,1,3]},"id":1,"currency":"EUR","initial_price":1094.4,"final_price":3979.69,"updated_at":"2016-06-10T15:32:54Z","taxes":[{"name":{"fr":"VAT
63
+ fr","en":"VAT"},"percentage":"23.0","amount":"686.49"}],"price_details":{"taxes":[{"name":{"fr":"VAT
64
+ fr","en":"VAT"},"percentage":"23.0","amount":"228.83","taxable_type":"Rental","taxable_id":1,"tax_id":1,"included":false},{"name":{"fr":"z
65
+ other FR","en":"other"},"percentage":"10.0","amount":"99.49","taxable_type":"Rental","taxable_id":1,"tax_id":2,"included":true},{"name":{"fr":"VAT
66
+ fr","en":"VAT"},"percentage":"23.0","amount":"457.66","taxable_type":"Fee","taxable_id":2,"tax_id":1,"included":false},{"name":{"fr":"z
67
+ other FR","en":"other"},"percentage":"10.0","amount":"198.98","taxable_type":"Fee","taxable_id":2,"tax_id":2,"included":true}],"fees":[{"name":{"fr":"whatever
68
+ car","en":"Car"},"required":true,"price":"2188.8","quantity":1,"id":2,"rentals_fee_id":1},{"name":{"fr":"","en":"whatever"},"required":true,"price":"10.0","quantity":1,"id":5,"rentals_fee_id":3}]},"price_to_pay_now":3979.69}]}'
69
+ http_version:
70
+ recorded_at: Fri, 10 Jun 2016 15:35:59 GMT
71
+ recorded_with: VCR 2.9.3
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookingsync-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.36
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sébastien Grosjean
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-20 00:00:00.000000000 Z
11
+ date: 2016-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -284,6 +284,7 @@ files:
284
284
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals/returns_rentals_by_ids.yml
285
285
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_meta/returns_meta_information_about_all_rentals.yml
286
286
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_meta/returns_meta_information_about_requested_rentals.yml
287
+ - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_search/performs_autopagination_using_POST.yml
287
288
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_search/rentals_ids_given/makes_a_search_within_given_rentals.yml
288
289
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_search/returns_rentals.yml
289
290
  - spec/fixtures/cassettes/BookingSync_API_Client_RentalsAmenities/_create_rentals_amenity/creates_a_new_rentals_amenity.yml
@@ -339,7 +340,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
339
340
  version: '0'
340
341
  requirements: []
341
342
  rubyforge_project:
342
- rubygems_version: 2.4.5.1
343
+ rubygems_version: 2.4.3
343
344
  signing_key:
344
345
  specification_version: 4
345
346
  summary: Ruby interface for accessing https://www.bookingsync.com
@@ -487,6 +488,7 @@ test_files:
487
488
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals/returns_rentals_by_ids.yml
488
489
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_meta/returns_meta_information_about_all_rentals.yml
489
490
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_meta/returns_meta_information_about_requested_rentals.yml
491
+ - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_search/performs_autopagination_using_POST.yml
490
492
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_search/rentals_ids_given/makes_a_search_within_given_rentals.yml
491
493
  - spec/fixtures/cassettes/BookingSync_API_Client_Rentals/_rentals_search/returns_rentals.yml
492
494
  - spec/fixtures/cassettes/BookingSync_API_Client_RentalsAmenities/_create_rentals_amenity/creates_a_new_rentals_amenity.yml