rapa 0.5.7 → 0.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: daf9368b0cd3989155910e650b483b6355b3b978
4
- data.tar.gz: 282726a68609c28e82d8ef83cddb0c6c9e96d1ed
3
+ metadata.gz: 1818b2a706381589ac6fc00d485ebe1bba04254a
4
+ data.tar.gz: ae107e261a4337568d482ae9498d9e16aa197906
5
5
  SHA512:
6
- metadata.gz: 0e297e43370320522f9ad2294c57203f50949e0ea9a72e2eb946ef38908bb2aa5627e4eee9aa8494d98a4dd08964c399c8074534d49f0d40ef1fcbf3a6e04522
7
- data.tar.gz: c789502c0e33767cd9cc4de8a12d2260fa111c2f23339d061385c2a2d1a9c3def98241f3569140e0ba66134f0cfa03995a3c8690a539798075a2326e37626322
6
+ metadata.gz: 6d8969b4008e6e1b4cd70fcd2beaba06cf9ffa84277ec5577297dde562d03ea7c8b05e980432772ac177b055980273205fc02cbbc59e1c9d39c856d9ec324379
7
+ data.tar.gz: 8c1ef3179e5b67eb957548717b678ca82bf35f0ccadc8110a4a1ddb467eb360f69b66e2ccd91a2d4b336b7b6a09940782a9d78cff06bce905cc4857ea3d5be2a
@@ -1,3 +1,7 @@
1
+ ## v0.6.0
2
+
3
+ - Add `Rapa::Client#lookup_browse_node`
4
+
1
5
  ## v0.5.7
2
6
 
3
7
  - Add `Rapa::Resources::ItemResources#crators`
data/README.md CHANGED
@@ -74,6 +74,24 @@ response = client.list_items(
74
74
  )
75
75
  ```
76
76
 
77
+ ### Rapa::Client#lookup_browse_node
78
+
79
+ Available options:
80
+
81
+ - `:browse_node_id`
82
+ - `:domain`
83
+ - `:response_groups`
84
+
85
+ Returns a `Rapa::Responses::LookupBrowseNodeResponse`.
86
+
87
+ ```ruby
88
+ response = client.lookup_browse_node(
89
+ browse_node_id: "...",
90
+ domain: "...",
91
+ response_groups: ["..."],
92
+ )
93
+ ```
94
+
77
95
  ### Rapa::Client#search_items
78
96
 
79
97
  Available options:
@@ -98,6 +116,15 @@ response = client.search_items(
98
116
  )
99
117
  ```
100
118
 
119
+ ### Rapa::Responses::LookupBrowseNodeResponse
120
+
121
+ Available methods:
122
+
123
+ - `#error`
124
+ - `#has_error?`
125
+ - `#has_valid_request?`
126
+ - `#response_group(group)`
127
+
101
128
  ### Rapa::Responses::SearchItemsResponse
102
129
 
103
130
  Available methods:
@@ -108,6 +135,17 @@ Available methods:
108
135
  - `#total_pages`
109
136
  - `#total_results`
110
137
 
138
+ ### Rapa::Resources::BrowseNodeResource
139
+
140
+ Available methods:
141
+
142
+ - `#asin`
143
+ - `#author`
144
+ - `#eook?`
145
+ - `#product_group`
146
+ - `#title`
147
+ - `#url_details_page`
148
+
111
149
  ### Rapa::Resources::ItemResource
112
150
 
113
151
  Available methods:
@@ -10,12 +10,17 @@ require "rapa/price"
10
10
  require "rapa/quantity"
11
11
  require "rapa/queries/base_query"
12
12
  require "rapa/queries/list_items_query"
13
+ require "rapa/queries/lookup_browse_node"
13
14
  require "rapa/queries/search_items_query"
14
15
  require "rapa/resources/base_resource"
16
+ require "rapa/resources/browse_node_resource"
15
17
  require "rapa/resources/item_resource"
16
18
  require "rapa/responses/base_response"
17
- require "rapa/responses/list_items_response"
18
- require "rapa/responses/search_items_response"
19
+ require "rapa/responses/multiple_resources_response"
20
+ require "rapa/responses/multiple_resources_response/list_items_response"
21
+ require "rapa/responses/multiple_resources_response/search_items_response"
22
+ require "rapa/responses/single_resource_response"
23
+ require "rapa/responses/single_resource_response/lookup_browse_node_response"
19
24
  require "rapa/signer"
20
25
  require "rapa/similar_product"
21
26
  require "rapa/url"
@@ -22,6 +22,24 @@ module Rapa
22
22
  end
23
23
  end
24
24
 
25
+ # @param browse_node_id [Integer]
26
+ # @param domain [String]
27
+ # @param response_groups [Array<String>, nil]
28
+ # @return [Rapa::Responses::LookupBrowseNodeResponse]
29
+ def lookup_browse_node(
30
+ browse_node_id:,
31
+ domain:,
32
+ response_groups: nil
33
+ )
34
+ send_request(
35
+ browse_node_id: browse_node_id,
36
+ domain: domain,
37
+ query_class: ::Rapa::Queries::LookupBrowseNode,
38
+ response_class: ::Rapa::Responses::LookupBrowseNodeResponse,
39
+ response_groups: response_groups
40
+ )
41
+ end
42
+
25
43
  # @param item_ids [Array<String>]
26
44
  # @param domain [String]
27
45
  # @param id_type [String, nil]
@@ -0,0 +1,19 @@
1
+ module Rapa
2
+ module Queries
3
+ class LookupBrowseNode < BaseQuery
4
+ OPERATION = "BrowseNodeLookup"
5
+
6
+ property :BrowseNodeId
7
+
8
+ # @return [String]
9
+ def BrowseNodeId
10
+ options[:browse_node_id].to_s
11
+ end
12
+
13
+ # @note Override
14
+ def Operation
15
+ OPERATION
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,35 @@
1
+ module Rapa
2
+ module Resources
3
+ class BrowseNodeResource < BaseResource
4
+ # @return [String]
5
+ def asin
6
+ source["ASIN"]
7
+ end
8
+
9
+ # @return [String]
10
+ def author
11
+ source["Author"]
12
+ end
13
+
14
+ # @return [Boolean]
15
+ def ebook?
16
+ source["ProductGroup"] == "eBooks"
17
+ end
18
+
19
+ # @return [String]
20
+ def product_group
21
+ source["ProductGroup"]
22
+ end
23
+
24
+ # @return [String]
25
+ def title
26
+ source["Title"]
27
+ end
28
+
29
+ # @return [String]
30
+ def url_details_page
31
+ source["DetailPageURL"]
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,8 +1,6 @@
1
1
  module Rapa
2
2
  module Responses
3
3
  class BaseResponse
4
- include ::Enumerable
5
-
6
4
  # @param faraday_response [Faraday::Response]
7
5
  def initialize(faraday_response)
8
6
  @faraday_response = faraday_response
@@ -13,23 +11,11 @@ module Rapa
13
11
  faraday_response.body
14
12
  end
15
13
 
16
- # @note Implementation for Enumerable
17
- def each(&block)
18
- resources.each(&block)
19
- end
20
-
21
14
  # @return [Faraday::Utils::Headers]
22
15
  def headers
23
16
  faraday_response.headers
24
17
  end
25
18
 
26
- # @return [Array<Rapa::Resources::ItemResource>]
27
- def resources
28
- sources.map do |source|
29
- resource_class.new(source)
30
- end
31
- end
32
-
33
19
  # @return [Integer]
34
20
  def status
35
21
  faraday_response.status
@@ -0,0 +1,19 @@
1
+ module Rapa
2
+ module Responses
3
+ class MultipleResourcesResponse < BaseResponse
4
+ include ::Enumerable
5
+
6
+ # @note Implementation for Enumerable
7
+ def each(&block)
8
+ resources.each(&block)
9
+ end
10
+
11
+ # @return [Array<Rapa::Resources::ItemResource>]
12
+ def resources
13
+ sources.map do |source|
14
+ resource_class.new(source)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,6 +1,6 @@
1
1
  module Rapa
2
2
  module Responses
3
- class ListItemsResponse < BaseResponse
3
+ class ListItemsResponse < MultipleResourcesResponse
4
4
  # @return [Rapa::Error]
5
5
  def error
6
6
  if value = body.dig("ItemLookupErrorResponse", "Error")
@@ -1,6 +1,6 @@
1
1
  module Rapa
2
2
  module Responses
3
- class SearchItemsResponse < BaseResponse
3
+ class SearchItemsResponse < MultipleResourcesResponse
4
4
  # @return [Rapa::Error]
5
5
  def error
6
6
  if value = body.dig("ItemSearchResponse", "Items", "Request", "Errors", "Error")
@@ -0,0 +1,6 @@
1
+ module Rapa
2
+ module Responses
3
+ class SingleResourceResponse < BaseResponse
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,44 @@
1
+ module Rapa
2
+ module Responses
3
+ class LookupBrowseNodeResponse < SingleResourceResponse
4
+ # @return [Rapa::Error, nil]
5
+ def error
6
+ if value = body.dig("BrowseNodeLookupErrorResponse", "Error")
7
+ ::Rapa::Error.new(value)
8
+ end
9
+ end
10
+
11
+ # @return [Boolean]
12
+ def has_error?
13
+ !error.nil?
14
+ end
15
+
16
+ # @return [Boolean]
17
+ def has_valid_request?
18
+ body.dig("BrowseNodeLookupResponse", "BrowseNodes", "Request", "IsValid") == "True"
19
+ end
20
+
21
+ # @return [Array<Rapa::Resources::BrowseNodeResource>, nil]
22
+ def response_group(group)
23
+ item = sources.find { |source| source["Type"] == group }
24
+ unless item.nil?
25
+ item["TopItem"].map do |source|
26
+ resource_class.new(source)
27
+ end
28
+ end
29
+ end
30
+
31
+ private
32
+
33
+ # @note Override
34
+ def resource_class
35
+ ::Rapa::Resources::BrowseNodeResource
36
+ end
37
+
38
+ # @note Override
39
+ def source_or_sources
40
+ body.dig("BrowseNodeLookupResponse", "BrowseNodes", "BrowseNode", "TopItemSet")
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,3 +1,3 @@
1
1
  module Rapa
2
- VERSION = "0.5.7"
2
+ VERSION = "0.6.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rapa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-20 00:00:00.000000000 Z
11
+ date: 2017-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -163,12 +163,17 @@ files:
163
163
  - lib/rapa/quantity.rb
164
164
  - lib/rapa/queries/base_query.rb
165
165
  - lib/rapa/queries/list_items_query.rb
166
+ - lib/rapa/queries/lookup_browse_node.rb
166
167
  - lib/rapa/queries/search_items_query.rb
167
168
  - lib/rapa/resources/base_resource.rb
169
+ - lib/rapa/resources/browse_node_resource.rb
168
170
  - lib/rapa/resources/item_resource.rb
169
171
  - lib/rapa/responses/base_response.rb
170
- - lib/rapa/responses/list_items_response.rb
171
- - lib/rapa/responses/search_items_response.rb
172
+ - lib/rapa/responses/multiple_resources_response.rb
173
+ - lib/rapa/responses/multiple_resources_response/list_items_response.rb
174
+ - lib/rapa/responses/multiple_resources_response/search_items_response.rb
175
+ - lib/rapa/responses/single_resource_response.rb
176
+ - lib/rapa/responses/single_resource_response/lookup_browse_node_response.rb
172
177
  - lib/rapa/signer.rb
173
178
  - lib/rapa/similar_product.rb
174
179
  - lib/rapa/url.rb