rakuten_web_service 1.9.1 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +6 -9
  3. data/.github/FUNDING.yml +12 -0
  4. data/.travis.yml +10 -22
  5. data/CHANGELOG.md +102 -44
  6. data/Gemfile +3 -4
  7. data/README.ja.md +118 -48
  8. data/README.md +44 -17
  9. data/Rakefile +13 -0
  10. data/examples/ichiba_item_search.rb +1 -1
  11. data/examples/recipe_search.rb +16 -0
  12. data/examples/travel_apis.rb +19 -0
  13. data/lib/rakuten_web_service.rb +18 -1
  14. data/lib/rakuten_web_service/all_proxy.rb +2 -1
  15. data/lib/rakuten_web_service/books/genre.rb +1 -1
  16. data/lib/rakuten_web_service/books/resource.rb +1 -1
  17. data/lib/rakuten_web_service/books/total.rb +1 -1
  18. data/lib/rakuten_web_service/client.rb +9 -9
  19. data/lib/rakuten_web_service/configuration.rb +5 -17
  20. data/lib/rakuten_web_service/error.rb +5 -0
  21. data/lib/rakuten_web_service/genre.rb +3 -1
  22. data/lib/rakuten_web_service/gora/course.rb +1 -1
  23. data/lib/rakuten_web_service/gora/course_detail.rb +1 -1
  24. data/lib/rakuten_web_service/gora/plan.rb +1 -1
  25. data/lib/rakuten_web_service/ichiba.rb +2 -0
  26. data/lib/rakuten_web_service/ichiba/item.rb +2 -2
  27. data/lib/rakuten_web_service/ichiba/product.rb +1 -1
  28. data/lib/rakuten_web_service/ichiba/ranking.rb +1 -1
  29. data/lib/rakuten_web_service/ichiba/tag.rb +16 -0
  30. data/lib/rakuten_web_service/ichiba/tag_group.rb +23 -0
  31. data/lib/rakuten_web_service/kobo/ebook.rb +1 -1
  32. data/lib/rakuten_web_service/kobo/genre.rb +1 -1
  33. data/lib/rakuten_web_service/recipe.rb +1 -1
  34. data/lib/rakuten_web_service/recipe/category.rb +3 -1
  35. data/lib/rakuten_web_service/resource.rb +46 -26
  36. data/lib/rakuten_web_service/response.rb +10 -5
  37. data/lib/rakuten_web_service/search_result.rb +22 -23
  38. data/lib/rakuten_web_service/string_support.rb +18 -0
  39. data/lib/rakuten_web_service/travel.rb +2 -0
  40. data/lib/rakuten_web_service/travel/area_class.rb +129 -0
  41. data/lib/rakuten_web_service/travel/hotel.rb +30 -0
  42. data/lib/rakuten_web_service/travel/open_struct.rb +19 -0
  43. data/lib/rakuten_web_service/travel/resource.rb +12 -0
  44. data/lib/rakuten_web_service/travel/search_result.rb +34 -0
  45. data/lib/rakuten_web_service/version.rb +1 -1
  46. data/rakuten_web_service.gemspec +8 -5
  47. data/spec/fixtures/ichiba/tag_search.json +15 -0
  48. data/spec/fixtures/travel/area_class.json +1 -0
  49. data/spec/fixtures/travel/simple_hotel_search.json +1 -0
  50. data/spec/rakuten_web_service/configuration_spec.rb +0 -52
  51. data/spec/rakuten_web_service/genre_spec.rb +1 -1
  52. data/spec/rakuten_web_service/ichiba/tag_group_spec.rb +68 -0
  53. data/spec/rakuten_web_service/ichiba/tag_spec.rb +35 -0
  54. data/spec/rakuten_web_service/resource_spec.rb +31 -1
  55. data/spec/rakuten_web_service/response_spec.rb +7 -7
  56. data/spec/rakuten_web_service/travel/area_class_spec.rb +117 -0
  57. data/spec/rakuten_web_service/travel/open_struct_spec.rb +53 -0
  58. data/spec/rakuten_web_service/travel/search_result_spec.rb +71 -0
  59. data/spec/rakuten_web_service/travel/simple_hotel_search_spec.rb +65 -0
  60. data/spec/rakuten_web_service_spec.rb +48 -0
  61. metadata +90 -19
  62. data/spec/integration/integration_spec.rb +0 -78
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+ require 'rakuten_web_service/travel/open_struct'
3
+
4
+ describe RakutenWebService::Travel::OpenStruct do
5
+ let(:object) { RakutenWebService::Travel::OpenStruct.new(params) }
6
+
7
+ context 'Given simple hash with pairs of key-value' do
8
+ let(:params) do
9
+ { foo: 'bar', 'hoge' => 1, 'maxSize' => 100 }
10
+ end
11
+
12
+ specify 'should have interfaces with the name of a given hash keys' do
13
+ expect(object).to respond_to(:foo)
14
+ expect(object.foo).to eq(params[:foo])
15
+ expect(object).to respond_to(:hoge)
16
+ expect(object.hoge).to eq(params['hoge'])
17
+ end
18
+ specify 'should generate snakecase-method name' do
19
+ expect(object).to respond_to('maxSize')
20
+ expect(object).to respond_to('max_size')
21
+ end
22
+ end
23
+
24
+ context 'Given a hash including a hash' do
25
+ let(:params) do
26
+ {
27
+ name: 'Taro',
28
+ address: { country: :jp, city: :tokyo }
29
+ }
30
+ end
31
+
32
+ specify 'the inside hash should be converted to OpenStruct' do
33
+ expect(object.address.country).to eql(:jp)
34
+ expect(object.address.city).to eql(:tokyo)
35
+ end
36
+ end
37
+
38
+ context 'Giving an array of hash' do
39
+ let(:params) do
40
+ {
41
+ array: [
42
+ { foo: 'bar' },
43
+ { hoge: 'fuga' }
44
+ ]
45
+ }
46
+ end
47
+
48
+ specify 'the array should be converted to OpenStruct' do
49
+ expect(object.array[0].foo).to eql('bar')
50
+ expect(object.array[1].hoge).to eql('fuga')
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+
3
+ describe RakutenWebService::Travel::SearchResult do
4
+ let(:resource_class) do
5
+ Class.new(RakutenWebService::Resource) do
6
+ endpoint 'https://api.example.com/SearchDummyResource'
7
+ end
8
+ end
9
+ let(:search_result) do
10
+ RakutenWebService::Travel::SearchResult.new({}, resource_class)
11
+ end
12
+
13
+ describe '#next_page?' do
14
+ let(:response) do
15
+ double().tap do |d|
16
+ allow(d).to receive('[]').with('pagingInfo').and_return(pagingInfo)
17
+ end
18
+ end
19
+
20
+ before do
21
+ allow(search_result).to receive(:response).and_return(response)
22
+ end
23
+
24
+ context 'when current page does not reach at the last page' do
25
+ let(:pagingInfo) do
26
+ { 'page' => 1, 'pageCount' => 10 }
27
+ end
28
+
29
+ it 'should have next page' do
30
+ expect(search_result).to be_next_page
31
+ end
32
+ end
33
+ context 'when current page reaches at the last page' do
34
+ let(:pagingInfo) do
35
+ { 'page' => 5, 'pageCount' => 5 }
36
+ end
37
+
38
+ it 'should not have next page' do
39
+ expect(search_result).to_not be_next_page
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '#next_page' do
45
+ let(:response) do
46
+ double().tap do |d|
47
+ allow(d).to receive('[]').with('pagingInfo').and_return(pagingInfo)
48
+ end
49
+ end
50
+
51
+ before do
52
+ allow(search_result).to receive(:response).and_return(response)
53
+ end
54
+
55
+ let(:pagingInfo) do
56
+ { 'page' => 2, 'pageCount' => 3 }
57
+ end
58
+
59
+ it 'shold call search to fetch next page results.' do
60
+ expect(search_result).to receive(:search).with('page' => 3)
61
+
62
+ search_result.next_page
63
+ end
64
+ end
65
+
66
+ describe '#search' do
67
+ it 'should return trave\'s search result' do
68
+ expect(search_result.search({})).to be_a(RakutenWebService::Travel::SearchResult)
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+ require 'rakuten_web_service'
3
+
4
+ describe RakutenWebService::Travel::Hotel do
5
+ let(:endpoint) { 'https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426' }
6
+ let(:affiliate_id) { 'dummy_affiliate_id' }
7
+ let(:application_id) { 'dummy_application_id' }
8
+ let(:expected_query) do
9
+ {
10
+ affiliateId: affiliate_id,
11
+ applicationId: application_id,
12
+ formatVersion: 2,
13
+ largeClassCode: 'japan',
14
+ middleClassCode: 'hokkaido',
15
+ smallClassCode: 'sapporo',
16
+ detailClassCode: 'A'
17
+ }
18
+ end
19
+
20
+ before do
21
+ RakutenWebService.configure do |c|
22
+ c.affiliate_id = affiliate_id
23
+ c.application_id = application_id
24
+ end
25
+ end
26
+
27
+ describe '.search' do
28
+ let(:query) do
29
+ {
30
+ largeClassCode: 'japan',
31
+ middleClassCode: 'hokkaido',
32
+ smallClassCode: 'sapporo',
33
+ detailClassCode: 'A'
34
+ }
35
+ end
36
+
37
+ before do
38
+ response = JSON.parse(fixture('travel/simple_hotel_search.json'))
39
+ @expected_request = stub_request(:get, endpoint)
40
+ .with(query: expected_query).to_return(body: response.to_json)
41
+
42
+ response['pagingInfo']['page'] = 2
43
+ response['pagingInfo']['pageCount'] = 2
44
+ response['pagingInfo']['first'] = 31
45
+ response['pagingInfo']['last'] = 60
46
+ @second_request = stub_request(:get, endpoint)
47
+ .with(query: expected_query.merge(page: 2))
48
+ .to_return(body: response.to_json)
49
+ end
50
+
51
+ let(:results) { RakutenWebService::Travel::Hotel.search(query) }
52
+ let(:first) { results.first }
53
+
54
+ specify 'responds an array of RWS::Travel::Hotel object' do
55
+ expect(first).to be_a(RakutenWebService::Travel::Hotel)
56
+ end
57
+ specify 'respond object has 2 methods representing basic info and rating info ' do
58
+ expect(first.basic_info).to eq(first['hotelBasicInfo'])
59
+ expect(first.rating_info).to eq(first['hotelRatingInfo'])
60
+ end
61
+ specify 'should have 60 objects by getting responses automatically' do
62
+ expect(results.to_a.size).to eql 30
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe RakutenWebService do
4
+ describe '.configure' do
5
+ context 'given block has one arity' do
6
+ before do
7
+ RakutenWebService.configure do |c|
8
+ c.affiliate_id = 'dummy_affiliate_id'
9
+ c.application_id = 'dummy_application_id'
10
+ end
11
+ end
12
+
13
+ subject { RakutenWebService.configuration }
14
+
15
+ describe '#affiliate_id' do
16
+ subject { super().affiliate_id }
17
+ it { is_expected.to eq('dummy_affiliate_id') }
18
+ end
19
+
20
+ describe '#application_id' do
21
+ subject { super().application_id }
22
+
23
+ it { is_expected.to eq('dummy_application_id') }
24
+ end
25
+ end
26
+
27
+ context 'given block has more or less one arity' do
28
+ specify 'raise ArgumentError' do
29
+ expect do
30
+ RakutenWebService.configure do
31
+ end
32
+ end.to raise_error(ArgumentError)
33
+
34
+ expect do
35
+ RakutenWebService.configure do |c, _|
36
+ c.affiliate_id = 'dummy_affiliate_id'
37
+ c.application_id = 'dummy_application_id'
38
+ end
39
+ end.to raise_error(ArgumentError)
40
+ end
41
+ end
42
+ context 'call without block' do
43
+ specify 'raise ArgumentError' do
44
+ expect { RakutenWebService.configure }.to raise_error(ArgumentError)
45
+ end
46
+ end
47
+ end
48
+ end
metadata CHANGED
@@ -1,57 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rakuten_web_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tatsuya Sato
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-29 00:00:00.000000000 Z
11
+ date: 2020-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
15
43
  requirement: !ruby/object:Gem::Requirement
16
44
  requirements:
17
45
  - - "~>"
18
46
  - !ruby/object:Gem::Version
19
- version: '1.3'
47
+ version: '13.0'
20
48
  type: :development
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
52
  - - "~>"
25
53
  - !ruby/object:Gem::Version
26
- version: '1.3'
54
+ version: '13.0'
27
55
  - !ruby/object:Gem::Dependency
28
- name: rake
56
+ name: rexml
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
59
  - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: 12.3.0
61
+ version: '3.2'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: 12.3.0
68
+ version: '3.2'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rspec
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: 3.7.0
75
+ version: '3.9'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: 3.7.0
82
+ version: '3.9'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: tapp
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +94,34 @@ dependencies:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
96
  version: 1.5.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: terminal-table
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.8.0
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.8.0
69
111
  - !ruby/object:Gem::Dependency
70
112
  name: webmock
71
113
  requirement: !ruby/object:Gem::Requirement
72
114
  requirements:
73
115
  - - "~>"
74
116
  - !ruby/object:Gem::Version
75
- version: 3.1.1
117
+ version: '3.9'
76
118
  type: :development
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
122
  - - "~>"
81
123
  - !ruby/object:Gem::Version
82
- version: 3.1.1
124
+ version: '3.9'
83
125
  description: Ruby Client for Rakuten Web Service
84
126
  email:
85
127
  - tatsuya.b.sato@mail.rakuten.com
@@ -88,6 +130,7 @@ extensions: []
88
130
  extra_rdoc_files: []
89
131
  files:
90
132
  - ".codeclimate.yml"
133
+ - ".github/FUNDING.yml"
91
134
  - ".gitignore"
92
135
  - ".travis.yml"
93
136
  - ".vscode/launch.json"
@@ -105,6 +148,8 @@ files:
105
148
  - examples/books_item_search.rb
106
149
  - examples/gora_search.rb
107
150
  - examples/ichiba_item_search.rb
151
+ - examples/recipe_search.rb
152
+ - examples/travel_apis.rb
108
153
  - lib/rakuten_web_service.rb
109
154
  - lib/rakuten_web_service/all_proxy.rb
110
155
  - lib/rakuten_web_service/books.rb
@@ -133,6 +178,8 @@ files:
133
178
  - lib/rakuten_web_service/ichiba/product.rb
134
179
  - lib/rakuten_web_service/ichiba/ranking.rb
135
180
  - lib/rakuten_web_service/ichiba/shop.rb
181
+ - lib/rakuten_web_service/ichiba/tag.rb
182
+ - lib/rakuten_web_service/ichiba/tag_group.rb
136
183
  - lib/rakuten_web_service/kobo.rb
137
184
  - lib/rakuten_web_service/kobo/ebook.rb
138
185
  - lib/rakuten_web_service/kobo/genre.rb
@@ -141,6 +188,13 @@ files:
141
188
  - lib/rakuten_web_service/resource.rb
142
189
  - lib/rakuten_web_service/response.rb
143
190
  - lib/rakuten_web_service/search_result.rb
191
+ - lib/rakuten_web_service/string_support.rb
192
+ - lib/rakuten_web_service/travel.rb
193
+ - lib/rakuten_web_service/travel/area_class.rb
194
+ - lib/rakuten_web_service/travel/hotel.rb
195
+ - lib/rakuten_web_service/travel/open_struct.rb
196
+ - lib/rakuten_web_service/travel/resource.rb
197
+ - lib/rakuten_web_service/travel/search_result.rb
144
198
  - lib/rakuten_web_service/version.rb
145
199
  - rakuten_web_service.gemspec
146
200
  - spec/fixtures/books/book_search_with_keyword_Ruby.json
@@ -160,11 +214,13 @@ files:
160
214
  - spec/fixtures/ichiba/parents_genre_search.json
161
215
  - spec/fixtures/ichiba/product_search.json
162
216
  - spec/fixtures/ichiba/ranking_search.json
217
+ - spec/fixtures/ichiba/tag_search.json
163
218
  - spec/fixtures/kobo/ebook_search_with_Ruby.json
164
219
  - spec/fixtures/kobo/genre_search.json
165
220
  - spec/fixtures/recipe/category.json
166
221
  - spec/fixtures/recipe/ranking.json
167
- - spec/integration/integration_spec.rb
222
+ - spec/fixtures/travel/area_class.json
223
+ - spec/fixtures/travel/simple_hotel_search.json
168
224
  - spec/rakuten_web_service/books/book_spec.rb
169
225
  - spec/rakuten_web_service/books/cd_spec.rb
170
226
  - spec/rakuten_web_service/books/dvd_spec.rb
@@ -186,19 +242,26 @@ files:
186
242
  - spec/rakuten_web_service/ichiba/product_search_spec.rb
187
243
  - spec/rakuten_web_service/ichiba/ranking_spec.rb
188
244
  - spec/rakuten_web_service/ichiba/shop_spec.rb
245
+ - spec/rakuten_web_service/ichiba/tag_group_spec.rb
246
+ - spec/rakuten_web_service/ichiba/tag_spec.rb
189
247
  - spec/rakuten_web_service/kobo/ebook_spec.rb
190
248
  - spec/rakuten_web_service/kobo/genre_spec.rb
191
249
  - spec/rakuten_web_service/recipe/category_spec.rb
192
250
  - spec/rakuten_web_service/recipe_spec.rb
193
251
  - spec/rakuten_web_service/resource_spec.rb
194
252
  - spec/rakuten_web_service/response_spec.rb
253
+ - spec/rakuten_web_service/travel/area_class_spec.rb
254
+ - spec/rakuten_web_service/travel/open_struct_spec.rb
255
+ - spec/rakuten_web_service/travel/search_result_spec.rb
256
+ - spec/rakuten_web_service/travel/simple_hotel_search_spec.rb
257
+ - spec/rakuten_web_service_spec.rb
195
258
  - spec/spec_helper.rb
196
259
  - spec/support/fixture_suppot.rb
197
260
  homepage: http://webservice.rakuten.co.jp/
198
261
  licenses:
199
262
  - MIT
200
263
  metadata: {}
201
- post_install_message:
264
+ post_install_message:
202
265
  rdoc_options: []
203
266
  require_paths:
204
267
  - lib
@@ -206,16 +269,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
269
  requirements:
207
270
  - - ">="
208
271
  - !ruby/object:Gem::Version
209
- version: 2.3.0
272
+ version: 2.5.0
210
273
  required_rubygems_version: !ruby/object:Gem::Requirement
211
274
  requirements:
212
275
  - - ">="
213
276
  - !ruby/object:Gem::Version
214
277
  version: '0'
215
278
  requirements: []
216
- rubyforge_project:
217
- rubygems_version: 2.7.3
218
- signing_key:
279
+ rubygems_version: 3.1.2
280
+ signing_key:
219
281
  specification_version: 4
220
282
  summary: Ruby Client for Rakuten Web Service
221
283
  test_files:
@@ -236,11 +298,13 @@ test_files:
236
298
  - spec/fixtures/ichiba/parents_genre_search.json
237
299
  - spec/fixtures/ichiba/product_search.json
238
300
  - spec/fixtures/ichiba/ranking_search.json
301
+ - spec/fixtures/ichiba/tag_search.json
239
302
  - spec/fixtures/kobo/ebook_search_with_Ruby.json
240
303
  - spec/fixtures/kobo/genre_search.json
241
304
  - spec/fixtures/recipe/category.json
242
305
  - spec/fixtures/recipe/ranking.json
243
- - spec/integration/integration_spec.rb
306
+ - spec/fixtures/travel/area_class.json
307
+ - spec/fixtures/travel/simple_hotel_search.json
244
308
  - spec/rakuten_web_service/books/book_spec.rb
245
309
  - spec/rakuten_web_service/books/cd_spec.rb
246
310
  - spec/rakuten_web_service/books/dvd_spec.rb
@@ -262,11 +326,18 @@ test_files:
262
326
  - spec/rakuten_web_service/ichiba/product_search_spec.rb
263
327
  - spec/rakuten_web_service/ichiba/ranking_spec.rb
264
328
  - spec/rakuten_web_service/ichiba/shop_spec.rb
329
+ - spec/rakuten_web_service/ichiba/tag_group_spec.rb
330
+ - spec/rakuten_web_service/ichiba/tag_spec.rb
265
331
  - spec/rakuten_web_service/kobo/ebook_spec.rb
266
332
  - spec/rakuten_web_service/kobo/genre_spec.rb
267
333
  - spec/rakuten_web_service/recipe/category_spec.rb
268
334
  - spec/rakuten_web_service/recipe_spec.rb
269
335
  - spec/rakuten_web_service/resource_spec.rb
270
336
  - spec/rakuten_web_service/response_spec.rb
337
+ - spec/rakuten_web_service/travel/area_class_spec.rb
338
+ - spec/rakuten_web_service/travel/open_struct_spec.rb
339
+ - spec/rakuten_web_service/travel/search_result_spec.rb
340
+ - spec/rakuten_web_service/travel/simple_hotel_search_spec.rb
341
+ - spec/rakuten_web_service_spec.rb
271
342
  - spec/spec_helper.rb
272
343
  - spec/support/fixture_suppot.rb