forked from completelynovel/amazon-product-advertising-api
/
EXAMPLE.txt
128 lines (102 loc) · 5.21 KB
/
EXAMPLE.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Basic usage
###########
require 'rubygems'
require 'amazon_product_advertising_api'
# Setup your API keys - in an initializer or something like that
AmazonProductAdvertisingApi::Base.access_key_id = "<insert api key here>"
AmazonProductAdvertisingApi::Base.secret_access_key = "<insert secret access key here>"
# Setup Associates IDs for whichever regions you're selling to
AmazonProductAdvertisingApi::Base.associate_ids.uk = "<insert UK Associate ID here>"
AmazonProductAdvertisingApi::Base.associate_ids.us = "<insert US Associate ID here>"
lookup = AmazonProductAdvertisingApi::Operations::Item::ItemLookup.new("0201485419")
lookup.run
# Returned XML, tidied
# <?xml version="1.0"?>
# <ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
# <OperationRequest>
# <RequestId>d6c19392-7710-4b05-ad9c-1637755170d8</RequestId>
# <Arguments>
# <Argument Name="Operation" Value="ItemLookup"/>
# <Argument Name="Service" Value="AWSECommerceService"/>
# <Argument Name="ItemId" Value="0201485419"/>
# <Argument Name="AWSAccessKeyId" Value="<your api key>"/>
# </Arguments>
# <RequestProcessingTime>0.0376290000000000</RequestProcessingTime>
# </OperationRequest>
# <Items>
# <Request>
# <IsValid>True</IsValid>
# <ItemLookupRequest>
# <Condition>New</Condition>
# <DeliveryMethod>Ship</DeliveryMethod>
# <IdType>ASIN</IdType>
# <MerchantId>Amazon</MerchantId>
# <OfferPage>1</OfferPage>
# <ItemId>0201485419</ItemId>
# <ResponseGroup>Small</ResponseGroup>
# <ReviewPage>1</ReviewPage>
# </ItemLookupRequest>
# </Request>
# <Item>
# <ASIN>0201485419</ASIN>
# <DetailPageURL>http://www.amazon.co.uk/Art-Computer-Programming-Information-Processing/dp/0201485419%3FSubscriptionId%3D<your api key>%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0201485419</DetailPageURL>
# <ItemAttributes>git
# <Author>Donald E. Knuth</Author>
# <Manufacturer>Addison Wesley</Manufacturer>
# <ProductGroup>Book</ProductGroup>
# <Title>The Art of Computer Programming: v. 1-3: Vol 1-3 (Series in Computer Science & Information Processing)</Title>
# </ItemAttributes>
# </Item>
# </Items>
# </ItemLookupResponse>
# is_valid is part of the api and says whether the request was valid
lookup.is_valid
=> true
lookup.response.items.size
=> 1
lookup.response.items.first
=> #<AmazonProductAdvertisingApi::Item:0x139154c @detail_page_url="http://www.amazon.co.uk/Art-Computer-Programming-Information-Processing/dp/0201485419%3FSubscriptionId%3D<your api key>%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0201485419", @item_attributes=#<AmazonProductAdvertisingApi::Container:0x1391448 @manufacturer="Addison Wesley", @product_group="Book", @title="The Art of Computer Programming: v. 1-3: Vol 1-3 (Series in Computer Science & Information Processing)", @author="Donald E. Knuth">, @asin="0201485419">
lookup.response.items.first.asin
=> "0201485419"
# ItemAttributes is a container element, doesn't return a string
lookup.response.items.first.item_attributes
=> #<AmazonProductAdvertisingApi::Container:0x1391448 @manufacturer="Addison Wesley", @product_group="Book", @title="The Art of Computer Programming: v. 1-3: Vol 1-3 (Series in Computer Science & Information Processing)", @author="Donald E. Knuth">
lookup.response.items.first.item_attributes.title
=> "The Art of Computer Programming: v. 1-3: Vol 1-3 (Series in Computer Science & Information Processing)"
lookup.response.items.first.item_attributes.author
=> "Donald E. Knuth"
# If you need to debug, you can access all the xml data easily
lookup.raw_data
=> <XML string, straight from the request body>
lookup.hpricot_data
=> <the xml data, having been fed into Hpricot>
# And also the request uri
lookup.request_uri
=> #<URI::HTTP:0x1c7021c URL:http://ecs.amazonaws.co.uk/onca/xml?Service=AWSECommerceService&Operation=ItemLookup&ItemId=0201485419&AWSAccessKeyId=%3Cinsert%20api%20key%20here%3E>
Error handling - invalid request credentials, url form, etc
###########################################################
AmazonProductAdvertisingApi::Base.access_key_id = "<an invalid id>"
lookup = AmazonProductAdvertisingApi::Operations::Item::ItemLookup.new("0201485419")
lookup.run
=> false
lookup.is_valid
=> false
lookup.errors
=> <an array of error objects>
lookup.errors.first.code
=> AWS.InvalidParameterValue
lookup.errors.first.message
=> <an invalid id> is not a valid value for AWSAccessKeyId. Please change this value and retry your request.
Error handling - invalid request credentials, url form, etc
###########################################################
AmazonProductAdvertisingApi::Base.access_key_id = "<valid api key>"
lookup = AmazonProductAdvertisingApi::Operations::Item::ItemLookup.new("<invalid asin>")
lookup.run
=> false
# is_valid returns true as the request was well formed, it just doesn't have any valid data to return
lookup.is_valid
=> true
lookup.errors.first.code
=> AWS.InvalidParameterValue
lookup.errors.first.message
=> <an invalid asin> is not a valid value for ItemId. Please change this value and retry your request.