Class: A2z::Responses::Item
- Includes:
- Helpers
- Defined in:
- lib/a2z/responses/item.rb
Instance Attribute Summary collapse
-
#asin ⇒ Object
Returns the value of attribute asin.
-
#detail_page_url ⇒ Object
Returns the value of attribute detail_page_url.
-
#editorial_reviews ⇒ Object
Returns the value of attribute editorial_reviews.
-
#image_sets ⇒ Object
Returns the value of attribute image_sets.
-
#large_image ⇒ Object
Returns the value of attribute large_image.
-
#links ⇒ Object
Returns the value of attribute links.
-
#medium_image ⇒ Object
Returns the value of attribute medium_image.
-
#offer_summary ⇒ Object
Returns the value of attribute offer_summary.
-
#offers ⇒ Object
Returns the value of attribute offers.
-
#parent_asin ⇒ Object
Returns the value of attribute parent_asin.
-
#small_image ⇒ Object
Returns the value of attribute small_image.
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object
- #[]=(key, value) ⇒ Object
- #has_key?(key) ⇒ Boolean
-
#initialize ⇒ Item
constructor
A new instance of Item.
- #keys ⇒ Object
- #method_missing(name, *args, &block) ⇒ Object
- #respond_to_missing?(name, include_private = false) ⇒ Boolean
Methods included from Helpers
Constructor Details
#initialize ⇒ Item
Returns a new instance of Item.
10 11 12 13 14 15 16 |
# File 'lib/a2z/responses/item.rb', line 10 def initialize @links = [] @attrs = {} @image_sets = {} @editorial_reviews = [] @offers = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/a2z/responses/item.rb', line 26 def method_missing(name, *args, &block) method_name = name.to_s if method_name.end_with?('?') has_key?(method_name.sub(/\?$/, '')) elsif has_key?(method_name) self[method_name] else super end end |
Instance Attribute Details
#asin ⇒ Object
Returns the value of attribute asin.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def asin @asin end |
#detail_page_url ⇒ Object
Returns the value of attribute detail_page_url.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def detail_page_url @detail_page_url end |
#editorial_reviews ⇒ Object
Returns the value of attribute editorial_reviews.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def editorial_reviews @editorial_reviews end |
#image_sets ⇒ Object
Returns the value of attribute image_sets.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def image_sets @image_sets end |
#large_image ⇒ Object
Returns the value of attribute large_image.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def large_image @large_image end |
#links ⇒ Object
Returns the value of attribute links.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def links @links end |
#medium_image ⇒ Object
Returns the value of attribute medium_image.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def medium_image @medium_image end |
#offer_summary ⇒ Object
Returns the value of attribute offer_summary.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def offer_summary @offer_summary end |
#offers ⇒ Object
Returns the value of attribute offers.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def offers @offers end |
#parent_asin ⇒ Object
Returns the value of attribute parent_asin.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def parent_asin @parent_asin end |
#small_image ⇒ Object
Returns the value of attribute small_image.
6 7 8 |
# File 'lib/a2z/responses/item.rb', line 6 def small_image @small_image end |
Class Method Details
.from_response(data) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/a2z/responses/item.rb', line 50 def self.from_response(data) new.tap do |item| item.asin = data['ASIN'] item.parent_asin = data['ParentASIN'] item.detail_page_url = data['DetailPageURL'] item.small_image = Image.from_response(data['SmallImage']) if data['SmallImage'] item.medium_image = Image.from_response(data['MediumImage']) if data['MediumImage'] item.large_image = Image.from_response(data['LargeImage']) if data['LargeImage'] item.offer_summary = OfferSummary.from_response(data['OfferSummary']) if data['OfferSummary'] if data['ItemLinks'] && data['ItemLinks']['ItemLink'] item_links = array_wrap(data['ItemLinks']['ItemLink']) item.links = item_links.collect { |link| ItemLink.from_response(link) } end if data['ItemAttributes'] data['ItemAttributes'].each { |key, value| item[underscore(key)] = value } end if data['ImageSets'] && data['ImageSets']['ImageSet'] image_sets = array_wrap(data['ImageSets']['ImageSet']) image_sets.each do |image_set| image_set = ImageSet.from_response(image_set) item.image_sets[image_set.category.to_sym] = image_set end end if data['EditorialReviews'] && data['EditorialReviews']['EditorialReview'] reviews = array_wrap(data['EditorialReviews']['EditorialReview']) item.editorial_reviews = reviews.collect { |review| EditorialReview.from_response(review) } end if data['Offers'] && data['Offers']['Offer'] offers = array_wrap(data['Offers']['Offer']) item.offers = offers.collect { |offer| Offer.from_response(offer) } end item.freeze end end |
Instance Method Details
#[](key) ⇒ Object
42 43 44 |
# File 'lib/a2z/responses/item.rb', line 42 def [](key) @attrs[key] end |
#[]=(key, value) ⇒ Object
38 39 40 |
# File 'lib/a2z/responses/item.rb', line 38 def []=(key, value) @attrs[key] = value end |
#has_key?(key) ⇒ Boolean
46 47 48 |
# File 'lib/a2z/responses/item.rb', line 46 def has_key?(key) @attrs.has_key?(key) end |
#keys ⇒ Object
18 19 20 |
# File 'lib/a2z/responses/item.rb', line 18 def keys @attrs.keys end |
#respond_to_missing?(name, include_private = false) ⇒ Boolean
22 23 24 |
# File 'lib/a2z/responses/item.rb', line 22 def respond_to_missing?(name, include_private = false) name.to_s.end_with?('?') || super end |