rakuten_web_service 1.9.0 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.travis.yml +0 -3
- data/CHANGELOG.md +7 -0
- data/lib/rakuten_web_service.rb +2 -0
- data/lib/rakuten_web_service/all_proxy.rb +2 -0
- data/lib/rakuten_web_service/books.rb +2 -0
- data/lib/rakuten_web_service/books/book.rb +2 -0
- data/lib/rakuten_web_service/books/cd.rb +2 -0
- data/lib/rakuten_web_service/books/dvd.rb +2 -0
- data/lib/rakuten_web_service/books/foreign_book.rb +2 -0
- data/lib/rakuten_web_service/books/game.rb +2 -0
- data/lib/rakuten_web_service/books/genre.rb +5 -3
- data/lib/rakuten_web_service/books/magazine.rb +2 -0
- data/lib/rakuten_web_service/books/resource.rb +7 -3
- data/lib/rakuten_web_service/books/software.rb +2 -0
- data/lib/rakuten_web_service/books/total.rb +2 -0
- data/lib/rakuten_web_service/client.rb +4 -2
- data/lib/rakuten_web_service/configuration.rb +10 -9
- data/lib/rakuten_web_service/error.rb +2 -0
- data/lib/rakuten_web_service/genre.rb +15 -19
- data/lib/rakuten_web_service/genre_information.rb +2 -0
- data/lib/rakuten_web_service/gora.rb +2 -0
- data/lib/rakuten_web_service/gora/course.rb +3 -1
- data/lib/rakuten_web_service/gora/course_detail.rb +6 -4
- data/lib/rakuten_web_service/gora/plan.rb +4 -2
- data/lib/rakuten_web_service/ichiba.rb +2 -0
- data/lib/rakuten_web_service/ichiba/genre.rb +6 -4
- data/lib/rakuten_web_service/ichiba/item.rb +9 -7
- data/lib/rakuten_web_service/ichiba/product.rb +3 -1
- data/lib/rakuten_web_service/ichiba/ranking.rb +2 -0
- data/lib/rakuten_web_service/ichiba/shop.rb +4 -2
- data/lib/rakuten_web_service/kobo.rb +2 -0
- data/lib/rakuten_web_service/kobo/ebook.rb +4 -2
- data/lib/rakuten_web_service/kobo/genre.rb +4 -2
- data/lib/rakuten_web_service/recipe.rb +4 -2
- data/lib/rakuten_web_service/recipe/category.rb +9 -8
- data/lib/rakuten_web_service/resource.rb +18 -21
- data/lib/rakuten_web_service/response.rb +2 -0
- data/lib/rakuten_web_service/search_result.rb +14 -21
- data/lib/rakuten_web_service/version.rb +3 -1
- data/rakuten_web_service.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: fd60bf746130b97cac7b59e6a529457183b6eae42f3eb595b64c4aa820b2bbcd
|
|
4
|
+
data.tar.gz: e773d058c29619d931bda28e656f7fe7cea63816905c56e20fa55c7a84662d49
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a68b23e18568d9e7cc60213b2fc881d02085966f809f7dd7e3e503e8c7404096ee46ea5120b2740ad896f4699a915cd57cf53af892ee17cb47aafc7944bb8031
|
|
7
|
+
data.tar.gz: ce2b779f0eddebd1c9246dc041bc277b84a3047e3428f7150ccfd2c60ecc204fa73b89817f31380e80d5c393e09a382cbf765569871912387f2153e2ba6cbf95
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# v1.9.1 (2018/03/30)
|
|
2
|
+
|
|
3
|
+
## Improvements
|
|
4
|
+
|
|
5
|
+
* Use the magic comment to frozen all string literals.[#93](https://github.com/rakuten-ws/rws-ruby-sdk/pull/93)
|
|
6
|
+
* Drop ruby 2.2 from supported ruby versions since it goes to the EOL. [#95](https://github.com/rakuten-ws/rws-ruby-sdk/pull/95)
|
|
7
|
+
|
|
1
8
|
# v1.9.0 (2018/01/04)
|
|
2
9
|
|
|
3
10
|
## Enhancements
|
data/lib/rakuten_web_service.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/genre'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -11,9 +13,9 @@ module RakutenWebService
|
|
|
11
13
|
|
|
12
14
|
root_id '000'
|
|
13
15
|
|
|
14
|
-
def search(params={})
|
|
15
|
-
params = params.merge(booksGenreId:
|
|
16
|
-
resource = Books::Resource.find_resource_by_genre_id(
|
|
16
|
+
def search(params = {})
|
|
17
|
+
params = params.merge(booksGenreId: id)
|
|
18
|
+
resource = Books::Resource.find_resource_by_genre_id(id)
|
|
17
19
|
resource.search(params)
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
require 'rakuten_web_service/books/genre'
|
|
3
5
|
|
|
@@ -5,7 +7,7 @@ module RakutenWebService
|
|
|
5
7
|
module Books
|
|
6
8
|
class Resource < RakutenWebService::Resource
|
|
7
9
|
set_parser do |response|
|
|
8
|
-
response['Items'].map { |item|
|
|
10
|
+
response['Items'].map { |item| new(item) }
|
|
9
11
|
end
|
|
10
12
|
|
|
11
13
|
def self.find_resource_by_genre_id(genre_id)
|
|
@@ -25,7 +27,7 @@ module RakutenWebService
|
|
|
25
27
|
end
|
|
26
28
|
|
|
27
29
|
def genre
|
|
28
|
-
@genre ||=
|
|
30
|
+
@genre ||= books_genre_id.split('/').map do |id|
|
|
29
31
|
Books::Genre.new(id)
|
|
30
32
|
end
|
|
31
33
|
end
|
|
@@ -34,10 +36,11 @@ module RakutenWebService
|
|
|
34
36
|
def get_attribute(name)
|
|
35
37
|
name = name.to_s
|
|
36
38
|
update_params unless @params[name]
|
|
37
|
-
@params[name]
|
|
39
|
+
@params[name]
|
|
38
40
|
end
|
|
39
41
|
|
|
40
42
|
private
|
|
43
|
+
|
|
41
44
|
def update_params
|
|
42
45
|
item = self.class.search(update_key => self[update_key]).first
|
|
43
46
|
@params = item.params
|
|
@@ -48,6 +51,7 @@ module RakutenWebService
|
|
|
48
51
|
end
|
|
49
52
|
|
|
50
53
|
protected
|
|
54
|
+
|
|
51
55
|
def params
|
|
52
56
|
@params.dup
|
|
53
57
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'uri'
|
|
2
4
|
require 'net/http'
|
|
3
5
|
require 'cgi'
|
|
@@ -21,12 +23,12 @@ module RakutenWebService
|
|
|
21
23
|
|
|
22
24
|
if Net::HTTPSuccess === response
|
|
23
25
|
return RakutenWebService::Response.new(@resource_class, body)
|
|
24
|
-
else
|
|
25
|
-
raise RakutenWebService::Error.repository[response.code.to_i], body['error_description']
|
|
26
26
|
end
|
|
27
|
+
raise RakutenWebService::Error.repository[response.code.to_i], body['error_description']
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
private
|
|
31
|
+
|
|
30
32
|
def request(path, params)
|
|
31
33
|
http = Net::HTTP.new(@url.host, @url.port)
|
|
32
34
|
http.use_ssl = true
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module RakutenWebService
|
|
2
4
|
class Configuration
|
|
3
5
|
attr_accessor :application_id, :affiliate_id, :max_retries, :debug
|
|
@@ -13,7 +15,7 @@ module RakutenWebService
|
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
def default_parameters
|
|
16
|
-
raise
|
|
18
|
+
raise 'Application ID is not defined' unless has_required_options?
|
|
17
19
|
{ application_id: application_id, affiliate_id: affiliate_id, format_version: '2' }
|
|
18
20
|
end
|
|
19
21
|
|
|
@@ -22,10 +24,11 @@ module RakutenWebService
|
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
def debug_mode?
|
|
25
|
-
ENV.
|
|
27
|
+
ENV.key?('RWS_SDK_DEBUG') || debug
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
private
|
|
31
|
+
|
|
29
32
|
def convert_snake_key_to_camel_key(params)
|
|
30
33
|
params.inject({}) do |h, (k, v)|
|
|
31
34
|
k = k.to_s.gsub(/([a-z]{1})_([a-z]{1})/) { "#{$1}#{$2.capitalize}" }
|
|
@@ -38,17 +41,15 @@ module RakutenWebService
|
|
|
38
41
|
def configure(&block)
|
|
39
42
|
@configuration ||= Configuration.new
|
|
40
43
|
if block
|
|
41
|
-
if block.arity != 1
|
|
42
|
-
|
|
43
|
-
end
|
|
44
|
-
block.call(@configuration)
|
|
44
|
+
raise ArgumentError, 'Block is required to have one argument' if block.arity != 1
|
|
45
|
+
yield @configuration
|
|
45
46
|
end
|
|
46
|
-
|
|
47
|
+
@configuration
|
|
47
48
|
end
|
|
48
49
|
|
|
49
50
|
def configuration(&block)
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
warn 'Warning: RakutenWebService.configuration is deprecated. Use RakutenWebService.configure.' if block_given?
|
|
52
|
+
configure(&block)
|
|
52
53
|
end
|
|
53
54
|
|
|
54
55
|
module_function :configure, :configuration
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -5,13 +7,10 @@ module RakutenWebService
|
|
|
5
7
|
def self.inherited(klass)
|
|
6
8
|
klass.set_parser do |response|
|
|
7
9
|
current = response['current']
|
|
8
|
-
children
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
brothers = Array(response['brothers']).map { |brother| klass.new(brother) }
|
|
13
|
-
current.merge!('brothers' => brothers)
|
|
14
|
-
|
|
10
|
+
%w[children parents brothers].each do |type|
|
|
11
|
+
elements = Array(response[type]).map { |e| klass.new(e) }
|
|
12
|
+
current.merge!(type => elements)
|
|
13
|
+
end
|
|
15
14
|
genre = klass.new(current)
|
|
16
15
|
[genre]
|
|
17
16
|
end
|
|
@@ -20,11 +19,8 @@ module RakutenWebService
|
|
|
20
19
|
def self.new(params)
|
|
21
20
|
case params
|
|
22
21
|
when Integer, String
|
|
23
|
-
unless repository[params.to_s].nil?
|
|
24
|
-
|
|
25
|
-
else
|
|
26
|
-
search(genre_id_key => params.to_s).first
|
|
27
|
-
end
|
|
22
|
+
return new(repository[params.to_s]) unless repository[params.to_s].nil?
|
|
23
|
+
search(genre_id_key => params.to_s).first
|
|
28
24
|
when Hash
|
|
29
25
|
super
|
|
30
26
|
end
|
|
@@ -34,16 +30,16 @@ module RakutenWebService
|
|
|
34
30
|
:"#{resource_name}_id"
|
|
35
31
|
end
|
|
36
32
|
|
|
37
|
-
def self.root_id(id=nil)
|
|
33
|
+
def self.root_id(id = nil)
|
|
38
34
|
@root_id = id || @root_id
|
|
39
35
|
end
|
|
40
36
|
|
|
41
37
|
def self.root
|
|
42
|
-
|
|
38
|
+
new(root_id)
|
|
43
39
|
end
|
|
44
40
|
|
|
45
41
|
def self.[](id)
|
|
46
|
-
|
|
42
|
+
new(repository[id.to_s] || id)
|
|
47
43
|
end
|
|
48
44
|
|
|
49
45
|
def self.[]=(id, genre)
|
|
@@ -56,19 +52,19 @@ module RakutenWebService
|
|
|
56
52
|
|
|
57
53
|
def initialize(params)
|
|
58
54
|
super
|
|
59
|
-
self.class[
|
|
55
|
+
self.class[id.to_s] = @params.reject { |k, _| k == 'itemCount' }
|
|
60
56
|
end
|
|
61
57
|
|
|
62
58
|
def children
|
|
63
|
-
@params['children'] ||= self.class.search(self.class.genre_id_key =>
|
|
59
|
+
@params['children'] ||= self.class.search(self.class.genre_id_key => id).first.children
|
|
64
60
|
end
|
|
65
61
|
|
|
66
62
|
def brothers
|
|
67
|
-
@params['brothers'] ||= self.class.search(self.class.genre_id_key =>
|
|
63
|
+
@params['brothers'] ||= self.class.search(self.class.genre_id_key => id).first.brothers
|
|
68
64
|
end
|
|
69
65
|
|
|
70
66
|
def parents
|
|
71
|
-
@params['parents'] ||= self.class.search(self.class.genre_id_key =>
|
|
67
|
+
@params['parents'] ||= self.class.search(self.class.genre_id_key => id).first.parents
|
|
72
68
|
end
|
|
73
69
|
end
|
|
74
70
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -6,7 +8,7 @@ module RakutenWebService
|
|
|
6
8
|
endpoint 'https://app.rakuten.co.jp/services/api/Gora/GoraGolfCourseSearch/20170623'
|
|
7
9
|
|
|
8
10
|
set_parser do |response|
|
|
9
|
-
response['Items'].map { |item|
|
|
11
|
+
response['Items'].map { |item| new(item) }
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
attribute :golfCourseId, :golfCourseName, :golfCourseAbbr, :golfCourseNameKana, :golfCourseCaption,
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -5,14 +7,14 @@ module RakutenWebService
|
|
|
5
7
|
class CourseDetail < Resource
|
|
6
8
|
class << self
|
|
7
9
|
def find(golf_course_id)
|
|
8
|
-
search(
|
|
10
|
+
search(golfCourseId: golf_course_id).first
|
|
9
11
|
end
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
endpoint 'https://app.rakuten.co.jp/services/api/Gora/GoraGolfCourseDetail/20170623'
|
|
13
15
|
|
|
14
16
|
set_parser do |response|
|
|
15
|
-
[
|
|
17
|
+
[new(response['Item'])]
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
attribute :carrier, :golfCourseId, :golfCourseName, :golfCourseAbbr, :golfCourseNameKana, :golfCourseCaption,
|
|
@@ -25,11 +27,11 @@ module RakutenWebService
|
|
|
25
27
|
:meal, :course, :costperformance, :distance, :fairway, :reserveCalUrl, :voiceUrl, :layoutUrl, :routeMapUrl
|
|
26
28
|
|
|
27
29
|
def ratings
|
|
28
|
-
get_attribute('ratings').map {|rating| Rating.new(rating)}
|
|
30
|
+
get_attribute('ratings').map { |rating| Rating.new(rating) }
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
def new_plans
|
|
32
|
-
get_attribute('newPlans').map {|plan| Plan.new(plan)}
|
|
34
|
+
get_attribute('newPlans').map { |plan| Plan.new(plan) }
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
class Rating < Resource
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -6,7 +8,7 @@ module RakutenWebService
|
|
|
6
8
|
endpoint 'https://app.rakuten.co.jp/services/api/Gora/GoraPlanSearch/20170623'
|
|
7
9
|
|
|
8
10
|
set_parser do |response|
|
|
9
|
-
response['Items'].map { |item|
|
|
11
|
+
response['Items'].map { |item| new(item) }
|
|
10
12
|
end
|
|
11
13
|
|
|
12
14
|
attribute :golfCourseId, :golfCourseName, :golfCourseAbbr, :golfCourseNameKana, :golfCourseCaption,
|
|
@@ -14,7 +16,7 @@ module RakutenWebService
|
|
|
14
16
|
:golfCourseImageUrl, :evaluation
|
|
15
17
|
|
|
16
18
|
def plan_info
|
|
17
|
-
get_attribute('planInfo').map {|plan| PlanInfo.new(plan['plan'])}
|
|
19
|
+
get_attribute('planInfo').map { |plan| PlanInfo.new(plan['plan']) }
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
class PlanInfo < Resource
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/genre'
|
|
2
4
|
require 'rakuten_web_service/ichiba/ranking'
|
|
3
5
|
require 'rakuten_web_service/ichiba/product'
|
|
@@ -11,13 +13,13 @@ module RakutenWebService
|
|
|
11
13
|
|
|
12
14
|
root_id 0
|
|
13
15
|
|
|
14
|
-
def ranking(options={})
|
|
15
|
-
options = options.merge(genre_id:
|
|
16
|
+
def ranking(options = {})
|
|
17
|
+
options = options.merge(genre_id: id)
|
|
16
18
|
RakutenWebService::Ichiba::RankingItem.search(options)
|
|
17
19
|
end
|
|
18
20
|
|
|
19
|
-
def products(options={})
|
|
20
|
-
options = options.merge(genre_id:
|
|
21
|
+
def products(options = {})
|
|
22
|
+
options = options.merge(genre_id: id)
|
|
21
23
|
RakutenWebService::Ichiba::Product.search(options)
|
|
22
24
|
end
|
|
23
25
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -35,16 +37,16 @@ module RakutenWebService
|
|
|
35
37
|
:genreId
|
|
36
38
|
|
|
37
39
|
def genre
|
|
38
|
-
Genre.new(
|
|
40
|
+
Genre.new(genre_id)
|
|
39
41
|
end
|
|
40
42
|
|
|
41
43
|
def shop
|
|
42
|
-
Shop.new(
|
|
43
|
-
'shopName' =>
|
|
44
|
-
'shopCode' =>
|
|
45
|
-
'shopUrl' =>
|
|
46
|
-
'shopAffiliateUrl' =>
|
|
47
|
-
|
|
44
|
+
Shop.new(
|
|
45
|
+
'shopName' => shop_name,
|
|
46
|
+
'shopCode' => shop_code,
|
|
47
|
+
'shopUrl' => shop_url,
|
|
48
|
+
'shopAffiliateUrl' => shop_affiliate_url
|
|
49
|
+
)
|
|
48
50
|
end
|
|
49
51
|
end
|
|
50
52
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
require 'rakuten_web_service/ichiba/genre'
|
|
3
5
|
|
|
@@ -27,7 +29,7 @@ module RakutenWebService
|
|
|
27
29
|
:ProductDetails
|
|
28
30
|
|
|
29
31
|
def genre
|
|
30
|
-
RakutenWebService::Ichiba::Genre.new(
|
|
32
|
+
RakutenWebService::Ichiba::Genre.new(genre_id)
|
|
31
33
|
end
|
|
32
34
|
end
|
|
33
35
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
require 'rakuten_web_service/ichiba/item'
|
|
3
5
|
|
|
@@ -6,8 +8,8 @@ module RakutenWebService
|
|
|
6
8
|
class Shop < Resource
|
|
7
9
|
attribute :shopName, :shopCode, :shopUrl, :shopAffiliateUrl
|
|
8
10
|
|
|
9
|
-
def items(options={})
|
|
10
|
-
options = options.merge(shop_code:
|
|
11
|
+
def items(options = {})
|
|
12
|
+
options = options.merge(shop_code: code)
|
|
11
13
|
RakutenWebService::Ichiba::Item.search(options)
|
|
12
14
|
end
|
|
13
15
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/resource'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -15,7 +17,7 @@ module RakutenWebService
|
|
|
15
17
|
:koboGenreId
|
|
16
18
|
|
|
17
19
|
set_parser do |response|
|
|
18
|
-
response['Items'].map { |i|
|
|
20
|
+
response['Items'].map { |i| new(i) }
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
def self.genre_class
|
|
@@ -23,7 +25,7 @@ module RakutenWebService
|
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
def genre
|
|
26
|
-
Kobo::Genre.new(
|
|
28
|
+
Kobo::Genre.new(kobo_genre_id)
|
|
27
29
|
end
|
|
28
30
|
end
|
|
29
31
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/genre'
|
|
2
4
|
|
|
3
5
|
module RakutenWebService
|
|
@@ -11,8 +13,8 @@ module RakutenWebService
|
|
|
11
13
|
|
|
12
14
|
attribute :koboGenreId, :koboGenreName, :genreLevel, :itemCount
|
|
13
15
|
|
|
14
|
-
def search(options={})
|
|
15
|
-
options = options.merge(self.class.genre_id_key =>
|
|
16
|
+
def search(options = {})
|
|
17
|
+
options = options.merge(self.class.genre_id_key => id)
|
|
16
18
|
RWS::Kobo::Ebook.search(options)
|
|
17
19
|
end
|
|
18
20
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/configuration'
|
|
2
4
|
|
|
3
5
|
require 'rakuten_web_service/recipe/category'
|
|
@@ -19,8 +21,8 @@ module RakutenWebService
|
|
|
19
21
|
|
|
20
22
|
def self.ranking(category_id = nil)
|
|
21
23
|
params = {}
|
|
22
|
-
params.merge
|
|
23
|
-
|
|
24
|
+
params = params.merge(category_id: category_id) unless category_id.nil?
|
|
25
|
+
search(params)
|
|
24
26
|
end
|
|
25
27
|
|
|
26
28
|
class << self
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module RakutenWebService
|
|
2
4
|
class Recipe < Resource
|
|
3
5
|
|
|
@@ -35,7 +37,7 @@ module RakutenWebService
|
|
|
35
37
|
|
|
36
38
|
def parent_category
|
|
37
39
|
return nil if parent_category_type.nil?
|
|
38
|
-
Recipe.categories(parent_category_type).find { |c| c.id.to_i
|
|
40
|
+
Recipe.categories(parent_category_type).find { |c| c.id.to_i == parent_category_id.to_i }
|
|
39
41
|
end
|
|
40
42
|
|
|
41
43
|
def absolute_category_id
|
|
@@ -47,14 +49,13 @@ module RakutenWebService
|
|
|
47
49
|
end
|
|
48
50
|
|
|
49
51
|
private
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
nil
|
|
56
|
-
end
|
|
52
|
+
|
|
53
|
+
def parent_category_type
|
|
54
|
+
case type
|
|
55
|
+
when 'small' then 'medium'
|
|
56
|
+
when 'medium' then 'large'
|
|
57
57
|
end
|
|
58
|
+
end
|
|
58
59
|
end
|
|
59
60
|
end
|
|
60
61
|
end
|
|
@@ -1,25 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/client'
|
|
2
4
|
require 'rakuten_web_service/search_result'
|
|
3
5
|
|
|
4
6
|
module RakutenWebService
|
|
5
7
|
class Resource
|
|
8
|
+
attr_reader :params
|
|
9
|
+
|
|
6
10
|
class << self
|
|
7
11
|
def attribute(*attributes)
|
|
8
12
|
attributes.each do |attribute|
|
|
9
|
-
method_name = attribute.to_s.gsub(/([a-z]+)([A-Z]{1})
|
|
10
|
-
|
|
11
|
-
end.downcase
|
|
12
|
-
method_name = method_name.sub(/^#{resource_name}_(\w+)$/) { $1 }
|
|
13
|
+
method_name = attribute.to_s.gsub(/([a-z]+)([A-Z]{1})/, '\1_\2').downcase
|
|
14
|
+
method_name = method_name.sub(/^#{resource_name}_(\w+)$/, '\1')
|
|
13
15
|
instance_eval do
|
|
14
16
|
define_method method_name do
|
|
15
17
|
get_attribute(attribute.to_s)
|
|
16
18
|
end
|
|
17
19
|
end
|
|
18
|
-
if method_name
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
end
|
|
20
|
+
next if method_name !~ /(.+)_flag$/
|
|
21
|
+
instance_eval do
|
|
22
|
+
define_method "#{$1}?" do
|
|
23
|
+
get_attribute(attribute.to_s) == 1
|
|
23
24
|
end
|
|
24
25
|
end
|
|
25
26
|
end
|
|
@@ -38,14 +39,14 @@ module RakutenWebService
|
|
|
38
39
|
end
|
|
39
40
|
|
|
40
41
|
def resource_name
|
|
41
|
-
@resource_name ||=
|
|
42
|
+
@resource_name ||= name.split('::').last.downcase
|
|
42
43
|
end
|
|
43
44
|
|
|
44
45
|
def set_resource_name(name)
|
|
45
46
|
@resource_name = name
|
|
46
47
|
end
|
|
47
48
|
|
|
48
|
-
def endpoint(url=nil)
|
|
49
|
+
def endpoint(url = nil)
|
|
49
50
|
@endpoint = url || @endpoint
|
|
50
51
|
end
|
|
51
52
|
|
|
@@ -66,7 +67,8 @@ module RakutenWebService
|
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
def [](key)
|
|
69
|
-
camel_key = key.
|
|
70
|
+
camel_key = key.split('_').map(&:capitalize).join
|
|
71
|
+
camel_key[0] = camel_key[0].downcase
|
|
70
72
|
@params[key] || @params[camel_key]
|
|
71
73
|
end
|
|
72
74
|
|
|
@@ -78,17 +80,12 @@ module RakutenWebService
|
|
|
78
80
|
params.keys
|
|
79
81
|
end
|
|
80
82
|
|
|
81
|
-
def ==(
|
|
82
|
-
raise ArgumentError unless
|
|
83
|
+
def ==(other)
|
|
84
|
+
raise ArgumentError unless other.is_a?(RakutenWebService::Resource)
|
|
83
85
|
|
|
84
|
-
|
|
85
|
-
@params[k] ==
|
|
86
|
+
params.keys.all? do |k|
|
|
87
|
+
@params[k] == other.params[k]
|
|
86
88
|
end
|
|
87
89
|
end
|
|
88
|
-
|
|
89
|
-
protected
|
|
90
|
-
def params
|
|
91
|
-
@params
|
|
92
|
-
end
|
|
93
90
|
end
|
|
94
91
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rakuten_web_service/all_proxy'
|
|
2
4
|
require 'rakuten_web_service/genre_information'
|
|
3
5
|
|
|
@@ -24,11 +26,8 @@ module RakutenWebService
|
|
|
24
26
|
|
|
25
27
|
def all(&block)
|
|
26
28
|
proxy = AllProxy.new(self)
|
|
27
|
-
if block
|
|
28
|
-
|
|
29
|
-
else
|
|
30
|
-
return proxy
|
|
31
|
-
end
|
|
29
|
+
proxy.each(&block) if block
|
|
30
|
+
proxy
|
|
32
31
|
end
|
|
33
32
|
|
|
34
33
|
def params
|
|
@@ -38,7 +37,7 @@ module RakutenWebService
|
|
|
38
37
|
def order(options)
|
|
39
38
|
new_params = params.dup
|
|
40
39
|
if options.is_a? Hash
|
|
41
|
-
key, sort_order = *
|
|
40
|
+
key, sort_order = *options.to_a.last
|
|
42
41
|
key = camelize(key.to_s)
|
|
43
42
|
new_params[:sort] = case sort_order.to_s.downcase
|
|
44
43
|
when 'desc'
|
|
@@ -88,25 +87,19 @@ module RakutenWebService
|
|
|
88
87
|
end
|
|
89
88
|
|
|
90
89
|
private
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
else
|
|
100
|
-
raise e
|
|
101
|
-
end
|
|
102
|
-
end
|
|
90
|
+
|
|
91
|
+
def ensure_retries(max_retries = RakutenWebService.configuration.max_retries)
|
|
92
|
+
yield
|
|
93
|
+
rescue RWS::TooManyRequests => e
|
|
94
|
+
raise e if max_retries <= 0
|
|
95
|
+
max_retries -= 1
|
|
96
|
+
sleep 1
|
|
97
|
+
retry
|
|
103
98
|
end
|
|
104
99
|
|
|
105
100
|
def camelize(str)
|
|
106
101
|
str = str.downcase
|
|
107
|
-
str = str.
|
|
108
|
-
"#{$1.capitalize}#{$2.capitalize}"
|
|
109
|
-
end
|
|
102
|
+
str = str.split('_').map(&:capitalize).join
|
|
110
103
|
str[0] = str[0].downcase
|
|
111
104
|
str
|
|
112
105
|
end
|
data/rakuten_web_service.gemspec
CHANGED
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
|
|
|
15
15
|
spec.files = `git ls-files`.split($/)
|
|
16
16
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
17
17
|
spec.require_paths = ['lib']
|
|
18
|
-
spec.required_ruby_version = '>= 2.
|
|
18
|
+
spec.required_ruby_version = '>= 2.3.0'
|
|
19
19
|
|
|
20
20
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
|
21
21
|
spec.add_development_dependency 'rake', '~> 12.3.0'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rakuten_web_service
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.9.
|
|
4
|
+
version: 1.9.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tatsuya Sato
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-
|
|
11
|
+
date: 2018-03-29 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -206,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
206
206
|
requirements:
|
|
207
207
|
- - ">="
|
|
208
208
|
- !ruby/object:Gem::Version
|
|
209
|
-
version: 2.
|
|
209
|
+
version: 2.3.0
|
|
210
210
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
211
|
requirements:
|
|
212
212
|
- - ">="
|
|
@@ -214,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
214
214
|
version: '0'
|
|
215
215
|
requirements: []
|
|
216
216
|
rubyforge_project:
|
|
217
|
-
rubygems_version: 2.
|
|
217
|
+
rubygems_version: 2.7.3
|
|
218
218
|
signing_key:
|
|
219
219
|
specification_version: 4
|
|
220
220
|
summary: Ruby Client for Rakuten Web Service
|