From 75d8e0e7ab2f4d74ec38bfac91cbfc8be6b1dd49 Mon Sep 17 00:00:00 2001 From: Dan Milne Date: Tue, 17 Sep 2019 22:53:32 +1000 Subject: [PATCH] Add an item class to process search and get_items response --- lib/paapi.rb | 1 + lib/paapi/item.rb | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 lib/paapi/item.rb diff --git a/lib/paapi.rb b/lib/paapi.rb index 54c2aa4..383dbf4 100644 --- a/lib/paapi.rb +++ b/lib/paapi.rb @@ -8,6 +8,7 @@ require 'paapi/response' module Paapi class Error < StandardError; end class NotImplemented < StandardError; end + SEARCH_PARAMS = %i[keywords actor, artist, author, brand title].freeze DEFAULT_PARTNER_TYPE = 'Associates' DEFAULT_MARKET = :us DEFAULT_RESOURCES = [ diff --git a/lib/paapi/item.rb b/lib/paapi/item.rb new file mode 100644 index 0000000..9bb81d3 --- /dev/null +++ b/lib/paapi/item.rb @@ -0,0 +1,49 @@ +module Paapi + class Item + attr_accessor :raw + def initialize(data) + @raw = data + end + + def asin + get(['ASIN']) + end + + def title + get(%w{ItemInfo Title DisplayValue}) + end + + def release_date + get(%w{ItemInfo ReleaseDate}) + end + + def eans + get(%w{ItemInfo ExternalIds EANs DisplayValues}) + end + + def upcs + get(%w{ItemInfo ExternalIds UPCs DisplayValues}) + end + + def features + get(%w{ItemInfo Features DisplayValues})&.join(' ') + end + + def part_number + get(%w{ItemInfo ManufactureInfo ItemPartNumber DisplayValue}) + end + + def format + get(%w{ItemInfo TechnicalInfo Formats DisplayValues}) + end + + def kindle? + !format.nil? && format&.include?('Kindle eBook') + end + + def get(keys) + @raw.dig(*keys) + end + + end +end \ No newline at end of file