lib/rapa/resources/item_resource.rb in rapa-0.5.0 vs lib/rapa/resources/item_resource.rb in rapa-0.5.1
- old
+ new
@@ -8,39 +8,56 @@
if flag_source = source.dig("ItemAttributes", "IsAdultProduct")
flag_source != "0"
end
end
- # @return [Array<Rapa::AlternateVersion>, nil]
+ # @return [Array<Rapa::AlternateVersion>]
def alternate_versions
- if alternate_version_sources = source.dig("AlternateVersions", "AlternateVersion")
- ::Array.wrap(alternate_version_sources).map do |alternate_version_source|
- ::Rapa::AlternateVersion.new(alternate_version_source)
- end
+ case alternate_version_source_or_sources = source.dig("AlternateVersions", "AlternateVersion")
+ when ::Array
+ alternate_version_source_or_sources
+ when ::Hash
+ [alternate_version_source_or_sources]
+ else
+ []
+ end.map do |alternate_version_source|
+ ::Rapa::AlternateVersion.new(alternate_version_source)
end
end
# @return [String]
def asin
source["ASIN"]
end
- # @return [Array<String>, nil]
+ # @return [Array<String>]
def authors
- if author_sources = source.dig("ItemAttributes", "Author")
- Array(author_sources)
+ case author_source_or_sources = source.dig("ItemAttributes", "Author")
+ when ::Array
+ author_source_or_sources
+ when ::String
+ [author_source_or_sources]
+ else
+ []
end
end
# @return [String, nil]
def binding
source.dig("ItemAttributes", "Binding")
end
- # @return [Array, nil]
+ # @return [Array<Rapa::BrowseNode>]
def browse_nodes
- source.dig("BrowseNodes", "BrowseNode").map do |browse_node_source|
+ case browse_node_source_or_sources = source.dig("BrowseNodes", "BrowseNode")
+ when ::Array
+ browse_node_source_or_sources
+ when ::Hash
+ [browse_node_source_or_sources]
+ else
+ []
+ end.map do |browse_node_source|
::Rapa::BrowseNode.new(browse_node_source)
end
end
# @return [String, nil]
@@ -144,16 +161,21 @@
# @return [String, nil]
def label
source.dig("ItemAttributes", "Label")
end
- # @return [Array<Rapa::Language>, nil]
+ # @return [Array<Rapa::Language>]
def languages
- if language_sources = source.dig("ItemAttributes", "Languages", "Language")
- language_sources.map do |language_source|
- ::Rapa::Language.new(language_source)
- end
+ case language_source_or_sources = source.dig("ItemAttributes", "Languages", "Language")
+ when ::Array
+ language_source_or_sources
+ when ::Hash
+ [language_source_or_sources]
+ else
+ []
+ end.map do |language_source|
+ ::Rapa::Language.new(language_source)
end
end
# @return [String, nil]
def manufacturer
@@ -236,20 +258,21 @@
if value = source.dig("RelatedItems", "RelatedItemPageCount")
value.to_i
end
end
- # @return [Array<Rapa::Resources::ItemResource>, nil]
+ # @return [Array<Rapa::Resources::ItemResource>]
def related_items
- if source_or_sources = source.dig("RelatedItems", "RelatedItem")
- if source_or_sources.is_a?(::Array)
- source_or_sources
- else
- [source_or_sources]
- end.map do |related_item_source|
- ::Rapa::Resources::ItemResource.new(related_item_source["Item"])
- end
+ case item_source_or_sources = source.dig("RelatedItems", "RelatedItem")
+ when ::Array
+ item_source_or_sources
+ when ::Hash
+ [item_source_or_sources]
+ else
+ []
+ end.map do |related_item_source|
+ ::Rapa::Resources::ItemResource.new(related_item_source["Item"])
end
end
# @return [String, nil]
def relationship
@@ -285,15 +308,20 @@
if value = source.dig("ItemAttributes", "SeasonSequence")
value.to_i
end
end
- # @return [Array<Rapa::SimilarProduct>, nil]
+ # @return [Array<Rapa::SimilarProduct>]
def similar_products
- if similar_product_sources = source["SimilarProducts"]
- similar_product_sources.map do |similar_product_source|
- ::Rapa::SimilarProduct.new(similar_product_source)
- end
+ case similar_product_source_or_sources = source["SimilarProducts"]
+ when ::Array
+ similar_product_sources
+ when ::Hash
+ [similar_product_source_or_sources]
+ else
+ []
+ end.map do |similar_product_source|
+ ::Rapa::SimilarProduct.new(similar_product_source)
end
end
# @return [String, nil]
def studio