class Rapa::Resources::ItemResource
Public Instance Methods
@return [Boolean, nil]
# File lib/rapa/resources/item_resource.rb, line 7 def adult_product? if flag_source = source.dig("ItemAttributes", "IsAdultProduct") flag_source != "0" end end
@return [Array<Rapa::AlternateVersion>]
# File lib/rapa/resources/item_resource.rb, line 14 def alternate_versions 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]
# File lib/rapa/resources/item_resource.rb, line 28 def asin source["ASIN"] end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 45 def binding source.dig("ItemAttributes", "Binding") end
@return [Array<Rapa::BrowseNode>]
# File lib/rapa/resources/item_resource.rb, line 50 def browse_nodes 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]
# File lib/rapa/resources/item_resource.rb, line 78 def creator_name if creators.first creators.first.name end end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 85 def creator_role if creators.first creators.first.role end end
@return [Array<Rapa::Creator>]
# File lib/rapa/resources/item_resource.rb, line 64 def creators case creator_source_or_sources = source.dig("ItemAttributes", "Creator") when ::Array creator_source_or_sources when ::Hash [creator_source_or_sources] else [] end.map do |creator_source| ::Rapa::Creator.new(creator_source) end end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 92 def ean source.dig("ItemAttributes", "EAN") end
@return [Boolean]
# File lib/rapa/resources/item_resource.rb, line 97 def ebook? source.dig("ItemAttributes", "ProductGroup") == "eBooks" end
@return [Integer, nil]
# File lib/rapa/resources/item_resource.rb, line 102 def episode_sequence if value = source.dig("ItemAttributes", "EpisodeSequence") value.to_i end end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 109 def genre source.dig("ItemAttributes", "Genre") end
@return [Boolean]
# File lib/rapa/resources/item_resource.rb, line 114 def has_customer_reviews? source.dig("CustomerReviews", "HasReviews") == "true" end
@return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 119 def image_hi_res find_image("HiResImage") end
@return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 124 def image_large find_image("LargeImage") end
@return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 129 def image_medium find_image("MediumImage") end
@return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 134 def image_small find_image("SmallImage") end
@return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 139 def image_swatch find_image("SwatchImage") end
@return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 144 def image_thumbnail find_image("ThumbnailImage") end
@return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 149 def image_tiny find_image("TinyImage") end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 154 def isbn source.dig("ItemAttributes", "ISBN") end
@return [Rapa::Quantity]
# File lib/rapa/resources/item_resource.rb, line 159 def item_height if quantity_source = source.dig("ItemAttributes", "ItemDimensions", "Height") ::Rapa::Quantity.new(quantity_source) end end
@return [Rapa::Quantity]
# File lib/rapa/resources/item_resource.rb, line 166 def item_length if quantity_source = source.dig("ItemAttributes", "ItemDimensions", "Length") ::Rapa::Quantity.new(quantity_source) end end
@return [Rapa::Quantity]
# File lib/rapa/resources/item_resource.rb, line 173 def item_width if quantity_source = source.dig("ItemAttributes", "ItemDimensions", "Width") ::Rapa::Quantity.new(quantity_source) end end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 180 def label source.dig("ItemAttributes", "Label") end
@return [Array<Rapa::Language>]
# File lib/rapa/resources/item_resource.rb, line 185 def languages 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]
# File lib/rapa/resources/item_resource.rb, line 199 def manufacturer source.dig("ItemAttributes", "Manufacturer") end
@return [Integer, nil]
# File lib/rapa/resources/item_resource.rb, line 204 def number_of_pages if value = source.dig("ItemAttributes", "NumberOfPages") value.to_i end end
@return [Rapa::Quantity]
# File lib/rapa/resources/item_resource.rb, line 211 def package_height if quantity_source = source.dig("ItemAttributes", "PackageDimensions", "Height") ::Rapa::Quantity.new(quantity_source) end end
@return [Rapa::Quantity]
# File lib/rapa/resources/item_resource.rb, line 218 def package_length if quantity_source = source.dig("ItemAttributes", "PackageDimensions", "Length") ::Rapa::Quantity.new(quantity_source) end end
@return [Rapa::Quantity]
# File lib/rapa/resources/item_resource.rb, line 225 def package_weight if quantity_source = source.dig("ItemAttributes", "PackageDimensions", "Weight") ::Rapa::Quantity.new(quantity_source) end end
@return [Rapa::Quantity]
# File lib/rapa/resources/item_resource.rb, line 232 def package_width if quantity_source = source.dig("ItemAttributes", "PackageDimensions", "Width") ::Rapa::Quantity.new(quantity_source) end end
@return [Rapa::Price, nil]
# File lib/rapa/resources/item_resource.rb, line 239 def price_lowest_collectible if price_source = source.dig("OfferSummary", "LowestCollectiblePrice") ::Rapa::Price.new(price_source) end end
@return [Rapa::Price, nil]
# File lib/rapa/resources/item_resource.rb, line 246 def price_lowest_new if price_source = source.dig("OfferSummary", "LowestNewPrice") ::Rapa::Price.new(price_source) end end
@return [Rapa::Price, nil]
# File lib/rapa/resources/item_resource.rb, line 253 def price_lowest_used if price_source = source.dig("OfferSummary", "LowestUsedPrice") ::Rapa::Price.new(price_source) end end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 260 def product_group source.dig("ItemAttributes", "ProductGroup") end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 265 def product_type_name source.dig("ItemAttributes", "ProductTypeName") end
@return [Date, nil]
# File lib/rapa/resources/item_resource.rb, line 270 def publication_date if value = source.dig("ItemAttributes", "PublicationDate") parse_date(value) end end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 277 def publisher source.dig("ItemAttributes", "Publisher") end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 317 def relationship source.dig("RelatedItems", "Relationship") end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 322 def relationship_type source.dig("RelatedItems", "RelationshipType") end
@return [Date, nil]
# File lib/rapa/resources/item_resource.rb, line 327 def release_date if value = source.dig("ItemAttributes", "ReleaseDate") parse_date(value) end end
@return [Rapa::Quantity, nil]
# File lib/rapa/resources/item_resource.rb, line 334 def running_time if value = source.dig("ItemAttributes", "RunningTime") ::Rapa::Quantity.new(value) end end
@return [Integer, nil]
# File lib/rapa/resources/item_resource.rb, line 341 def sales_rank source["SalesRank"] end
@return [Integer, nil]
# File lib/rapa/resources/item_resource.rb, line 346 def season_sequence if value = source.dig("ItemAttributes", "SeasonSequence") value.to_i end end
@return [Array<Rapa::SimilarProduct>]
# File lib/rapa/resources/item_resource.rb, line 353 def similar_products 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]
# File lib/rapa/resources/item_resource.rb, line 367 def studio source.dig("ItemAttributes", "Studio") end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 372 def title source.dig("ItemAttributes", "Title") end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 377 def url_add_to_wishlist item_links["Add To Wishlist"] end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 382 def url_all_customer_reviews item_links["All Customer Reviews"] end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 387 def url_all_offers item_links["All Offers"] end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 392 def url_customer_reviews_iframe source.dig("CustomerReviews", "IFrameURL") end
@return [String]
# File lib/rapa/resources/item_resource.rb, line 397 def url_details_page source["DetailPageURL"] end
@return [String, nil]
# File lib/rapa/resources/item_resource.rb, line 402 def url_tell_a_friend item_links["Tell A Friend"] end
Private Instance Methods
@param key [String] @return [Rapa::Image, nil]
# File lib/rapa/resources/item_resource.rb, line 410 def find_image(key) if image_source = find_image_source(key) ::Rapa::Image.new(image_source) end end
@param key [String] @return [Hash, nil]
# File lib/rapa/resources/item_resource.rb, line 418 def find_image_source(key) if source[key] source[key] else image_set = source.dig("ImageSets", "ImageSet") image_set = image_set.first if image_set.is_a?(::Array) if image_set image_set[key] end end end
@private @return [Hash, nil]
# File lib/rapa/resources/item_resource.rb, line 432 def item_attributes source["ItemAttributes"] end
@private @return [Hash]
# File lib/rapa/resources/item_resource.rb, line 438 def item_links @item_links ||= source["ItemLinks"]["ItemLink"].each_with_object({}) do |element, result| result[element["Description"]] = element["URL"] end end
@param string [String] @return [Date, nil]
# File lib/rapa/resources/item_resource.rb, line 446 def parse_date(string) case string when /\A\d{1,4}\z/ ::Date.parse("#{string}-01-01") when /\A\d{1,4}-\d{1,2}\z/ ::Date.parse("#{string}-01") when /\A\d{1,4}-\d{1,2}-\d{1,2}\z/ ::Date.parse(string) end end