diff --git a/lib/paapi/item.rb b/lib/paapi/item.rb index 5b89484..8a4ceb4 100644 --- a/lib/paapi/item.rb +++ b/lib/paapi/item.rb @@ -55,6 +55,13 @@ module Paapi end def contributors_of(kind) + contributors&.select { |e| e['Role'] == kind.to_s.gsub(/([[:alpha:]]+)/) { |w| w.capitalize } }&.map do |e| + r = e['Name'] + Nameable(r) unless r.to_s.empty? + end.compact + end + + def contributors_of1(kind) contributors&.select { |e| e['Role'] == kind.to_s.gsub(/([[:alpha:]]+)/) { |w| w.capitalize } }&.map { |e| Nameable(e['Name'])} end diff --git a/test/data/get_item_no_author.json b/test/data/get_item_no_author.json new file mode 100644 index 0000000..94a92e0 --- /dev/null +++ b/test/data/get_item_no_author.json @@ -0,0 +1,168 @@ +{ + "ItemsResult": { + "Items": [ + { + "ASIN": "1921878657", + "DetailPageURL": "https://www.amazon.com/dp/1921878657?tag=bookie09-20&linkCode=ogi&th=1&psc=1", + "Images": { + "Primary": { + "Large": { + "Height": 500, + "URL": "https://m.media-amazon.com/images/I/61xe6KCK16L.jpg", + "Width": 499 + } + } + }, + "ItemInfo": { + "ByLineInfo": { + "Contributors": [ + { + "Locale": "en_US", + "Name": "", + "Role": "Author" + } + ], + "Manufacturer": { + "DisplayValue": "Rockpool Publishing", + "Label": "Manufacturer", + "Locale": "en_US" + } + }, + "ContentInfo": { + "Languages": { + "DisplayValues": [ + { + "DisplayValue": "English", + "Type": "Published" + }, + { + "DisplayValue": "English", + "Type": "Original Language" + }, + { + "DisplayValue": "English", + "Type": "Unknown" + } + ], + "Label": "Language", + "Locale": "en_US" + }, + "PagesCount": { + "DisplayValue": 224, + "Label": "NumberOfPages", + "Locale": "en_US" + }, + "PublicationDate": { + "DisplayValue": "2013-08-01T00:00:01Z", + "Label": "PublicationDate", + "Locale": "en_US" + } + }, + "ExternalIds": { + "EANs": { + "DisplayValues": [ + "9781921878657" + ], + "Label": "EAN", + "Locale": "en_US" + }, + "ISBNs": { + "DisplayValues": [ + "1921878657" + ], + "Label": "ISBN", + "Locale": "en_US" + } + }, + "ManufactureInfo": { + "ItemPartNumber": { + "DisplayValue": "200 colour photos", + "Label": "PartNumber", + "Locale": "en_US" + } + }, + "ProductInfo": { + "ItemDimensions": { + "Height": { + "DisplayValue": 9.0, + "Label": "Height", + "Locale": "en_US", + "Unit": "Inches" + }, + "Length": { + "DisplayValue": 9.0, + "Label": "Length", + "Locale": "en_US", + "Unit": "Inches" + }, + "Weight": { + "DisplayValue": 1.65, + "Label": "Weight", + "Locale": "en_US", + "Unit": "Pounds" + }, + "Width": { + "DisplayValue": 0.6, + "Label": "Width", + "Locale": "en_US", + "Unit": "Inches" + } + }, + "UnitCount": { + "DisplayValue": 1, + "Label": "NumberOfItems", + "Locale": "en_US" + } + }, + "Title": { + "DisplayValue": "Muscle Car Mania: 100 legendary Australian motoring stories (Motoring Series)", + "Label": "Title", + "Locale": "en_US" + } + }, + "Offers": { + "Listings": [ + { + "Availability": { + "Message": "In Stock." + }, + "Condition": { + "SubCondition": { + "Value": "New" + }, + "Value": "New" + }, + "DeliveryInfo": { + "IsAmazonFulfilled": true, + "IsFreeShippingEligible": true, + "IsPrimeEligible": true + }, + "Id": "oGEK9dN87uwQuSy0Cy2FsGZgiQlK9AMvmDO0cvPSFLdVtNKcF4nDn97DsoZMfMiHzI8W4FvyXDbV25mf3XuEwD8FU9znwQ1eZXjWM0aYpY5F1QIJ0Pm44w%3D%3D", + "MerchantInfo": { + "Id": "ATVPDKIKX0DER", + "Name": "Amazon.com" + }, + "Price": { + "Amount": 10.36, + "Currency": "USD", + "DisplayAmount": "$10.36", + "Savings": { + "Amount": 11.59, + "Currency": "USD", + "DisplayAmount": "$11.59 (53%)", + "Percentage": 53 + } + }, + "SavingBasis": { + "Amount": 21.95, + "Currency": "USD", + "DisplayAmount": "$21.95" + }, + "ViolatesMAP": false + } + ] + } + } + ] + } +} \ No newline at end of file diff --git a/test/item_test.rb b/test/item_test.rb index ecb53d6..b1c857a 100644 --- a/test/item_test.rb +++ b/test/item_test.rb @@ -36,6 +36,17 @@ class ItemTest < Minitest::Test model: '26467' } ] + }, + { + name: 'Blank Name ', + response: 'get_item_no_author.json', + item_count: 1, + items: [ + { + asin: "1921878657", + authors: [] + } + ] } ]