ruby-aaws 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- # $Id: search.rb,v 1.26 2008/09/21 22:17:32 ianmacd Exp $
1
+ # $Id: search.rb,v 1.30 2009/02/19 16:19:47 ianmacd Exp $
2
2
  #
3
3
 
4
4
  module Amazon
@@ -35,7 +35,7 @@ module Amazon
35
35
  # _key_id_ is your AWS {access key
36
36
  # ID}[https://aws-portal.amazon.com/gp/aws/developer/registration/index.html],
37
37
  # _associate_ is your
38
- # Associates[http://docs.amazonwebservices.com/AWSECommerceService/2008-04-07/GSG/BecominganAssociate.html]
38
+ # Associates[http://docs.amazonwebservices.com/AWSECommerceService/2009-01-06/GSG/BecominganAssociate.html]
39
39
  # tag (if any), _locale_ is the locale in which you which to work
40
40
  # (*us* for amazon.com[http://www.amazon.com/], *uk* for
41
41
  # amazon.co.uk[http://www.amazon.co.uk], etc.), _cache_ is whether or
@@ -82,6 +82,7 @@ module Amazon
82
82
  else
83
83
  nil
84
84
  end
85
+ @api = @config['api'] || nil
85
86
  self.locale = locale
86
87
  end
87
88
 
@@ -101,6 +102,10 @@ module Amazon
101
102
  @tag = Amazon::AWS::DEF_ASSOC[@locale]
102
103
  end
103
104
 
105
+ if @config.key?( @locale ) && @config[@locale].key?( 'associate' )
106
+ @tag = @config[@locale]['associate']
107
+ end
108
+
104
109
  # We must now set up a new HTTP connection to the correct server for
105
110
  # this locale, unless the same server is used for both.
106
111
  #
@@ -188,7 +193,7 @@ module Amazon
188
193
  # The maximum page number that can be returned for each type of
189
194
  # operation is documented in the AWS Developer's Guide:
190
195
  #
191
- # http://docs.amazonwebservices.com/AWSECommerceService/2008-08-19/DG/index.html?CHAP_MakingRequestsandUnderstandingResponses.html#PagingThroughResults
196
+ # http://docs.amazonwebservices.com/AWSECommerceService/2009-01-06/DG/index.html?MaximumNumberofPages.html
192
197
  #
193
198
  # Note that _ItemLookup_ operations can use three separate pagination
194
199
  # parameters. Ruby/AWS, however, uses _OfferPage_ for the purposes of
@@ -205,6 +210,11 @@ module Amazon
205
210
  merge( operation.params ).
206
211
  merge( response_group.params )
207
212
 
213
+ # Check to see whether a particular version of the API has been
214
+ # requested. If so, overwrite Version with the new value.
215
+ #
216
+ q_params.merge!( { 'Version' => @api } ) if @api
217
+
208
218
  query = Amazon::AWS.assemble_query( q_params )
209
219
  page = Amazon::AWS.get_page( self, query )
210
220
  doc = Document.new( page )
@@ -215,6 +225,19 @@ module Amazon
215
225
  #
216
226
  error_check( doc )
217
227
 
228
+ # Another possible error results in a document containing nothing
229
+ # but <Result>Internal Error</Result>. This occurs when a specific
230
+ # version of the AWS API is requested, in combination with an
231
+ # operation that did not yet exist in that version of the API.
232
+ #
233
+ # For example:
234
+ #
235
+ # http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=foo&Operation=VehicleSearch&Year=2008&ResponseGroup=VehicleMakes&Service=AWSECommerceService&Version=2008-03-03
236
+ #
237
+ if xml = doc.elements['Result']
238
+ raise Amazon::AWS::Error::AWSError, xml.text
239
+ end
240
+
218
241
  # Fundamental errors happen at the OperationRequest level. For
219
242
  # example, if an invalid AWSAccessKeyId is used.
220
243
  #
@@ -1,4 +1,4 @@
1
- # $Id: tc_multiple_operation.rb,v 1.1 2008/05/19 10:17:26 ianmacd Exp $
1
+ # $Id: tc_multiple_operation.rb,v 1.2 2009/02/19 16:50:00 ianmacd Exp $
2
2
  #
3
3
 
4
4
  require 'test/unit'
@@ -8,11 +8,19 @@ class TestMultipleOperation < AWSTest
8
8
 
9
9
  def test_item_search
10
10
  il = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000AE4QEC',
11
- 'MerchantId' => 'Amazon' },
12
- { 'ItemId' => 'B000051WBE',
13
11
  'MerchantId' => 'Amazon' } )
12
+ il2 = ItemLookup.new( 'ASIN', { 'ItemId' => 'B000051WBE',
13
+ 'MerchantId' => 'Amazon' } )
14
+
15
+ # Create a batch request of the two ItemLookup operations.
16
+ #
17
+ il.batch( il2 )
18
+
14
19
  is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
15
-
20
+
21
+ # Create a multiple operation of the ItemSearch operation and the two
22
+ # batched ItemLookup operations.
23
+ #
16
24
  mo = MultipleOperation.new( is, il )
17
25
 
18
26
  response = @req.search( mo, @rg )
@@ -0,0 +1,106 @@
1
+ #!/usr/bin/ruby -w
2
+ #
3
+ # $Id: tc_vehicle_operations.rb,v 1.1 2009/02/19 15:50:03 ianmacd Exp $
4
+
5
+ require 'test/unit'
6
+ require './setup'
7
+
8
+ class TestVehicles < AWSTest
9
+
10
+ def test_vehicle_search
11
+ @req.locale = 'us'
12
+
13
+ # Get all cars for year 2008.
14
+ #
15
+ vs = VehicleSearch.new( { 'Year' => 2008 } )
16
+ rg = ResponseGroup.new( 'VehicleMakes' )
17
+ response = @req.search( vs, rg )
18
+
19
+ makes = response.vehicle_search_response[0].vehicle_years[0].
20
+ vehicle_year[0].vehicle_makes[0].vehicle_make
21
+ assert( makes.size > 0 )
22
+
23
+ make_id = makes.find { |make| make.make_name == 'Audi' }.make_id.to_i
24
+
25
+
26
+ # Get all Audi models from 2008.
27
+ #
28
+ vs = VehicleSearch.new( { 'Year' => 2008,
29
+ 'MakeId' => make_id } )
30
+ rg = ResponseGroup.new( 'VehicleModels' )
31
+ response = @req.search( vs, rg )
32
+
33
+ models = response.vehicle_search_response[0].vehicle_years[0].
34
+ vehicle_year[0].vehicle_makes[0].vehicle_make[0].
35
+ vehicle_models[0].vehicle_model
36
+ assert( models.size > 0 )
37
+
38
+ model_id = models.find { |model| model.model_name == 'R8' }.model_id.to_i
39
+
40
+ # Get all Audi R8 trim packages from 2008.
41
+ #
42
+ vs = VehicleSearch.new( { 'Year' => 2008,
43
+ 'MakeId' => make_id,
44
+ 'ModelId' => model_id } )
45
+ rg = ResponseGroup.new( 'VehicleTrims' )
46
+ response = @req.search( vs, rg )
47
+
48
+ trims = response.vehicle_search_response[0].vehicle_years[0].
49
+ vehicle_year[0].vehicle_makes[0].vehicle_make[0].
50
+ vehicle_models[0].vehicle_model[0].vehicle_trims[0].vehicle_trim
51
+ assert( trims.size > 0 )
52
+
53
+ trim_id = trims.find { |trim| trim.trim_name == 'Base' }.trim_id.to_i
54
+
55
+ vs = VehicleSearch.new( { 'Year' => 2008,
56
+ 'MakeId' => make_id,
57
+ 'ModelId' => model_id,
58
+ 'TrimId' => trim_id } )
59
+ rg = ResponseGroup.new( 'VehicleOptions' )
60
+ response = @req.search( vs, rg )
61
+
62
+ options = response.vehicle_search_response[0].vehicle_years[0].
63
+ vehicle_year[0].vehicle_makes[0].vehicle_make[0].
64
+ vehicle_models[0].vehicle_model[0].vehicle_trims[0].
65
+ vehicle_trim[0].vehicle_options[0]
66
+ engine = options.vehicle_engine_options.vehicle_engine
67
+ engine_name = engine.engine_name
68
+ engine_id = engine.engine_id
69
+ assert_not_nil( engine_name )
70
+
71
+ # Find parts for our 2008 Audi R8 with Base trim and whatever engine that
72
+ # trim package has.
73
+ #
74
+ vps = VehiclePartSearch.new( 2008, make_id, model_id,
75
+ { 'TrimId' => trim_id,
76
+ 'EngineId' => engine_id } )
77
+ rg = ResponseGroup.new( 'VehicleParts' )
78
+ response = @req.search( vps, rg )
79
+
80
+ parts = response.vehicle_part_search_response[0].vehicle_parts[0].part
81
+ assert( parts.size > 0 )
82
+
83
+ # Now, we do a reverse look-up.
84
+ #
85
+ # Go through all parts and test to see if they fit in our 2008 Audi R8
86
+ # Base trim. The answer should always be yes.
87
+ #
88
+ # part = parts[rand( parts.size - 1 )].item.asin
89
+
90
+ parts.each do |part|
91
+ vpl = VehiclePartLookup.new( part.item.asin,
92
+ { 'Year' => 2008,
93
+ 'MakeId' => make_id,
94
+ 'ModelId' => model_id,
95
+ 'TrimId' => trim_id } )
96
+
97
+ rg = ResponseGroup.new( 'VehiclePartFit' )
98
+ response = @req.search( vpl, rg )
99
+
100
+ fit = response.vehicle_part_lookup_response[0].vehicle_parts[0].part.
101
+ vehicle_part_fit.is_fit
102
+ assert_equal( 'YES', fit )
103
+ end
104
+ end
105
+
106
+ end
data/test/ts_aws.rb CHANGED
@@ -1,4 +1,4 @@
1
- # $Id: ts_aws.rb,v 1.4 2008/06/16 20:07:19 ianmacd Exp $
1
+ # $Id: ts_aws.rb,v 1.5 2009/02/19 15:50:03 ianmacd Exp $
2
2
  #
3
3
 
4
4
  require 'test/unit'
@@ -8,5 +8,6 @@ require 'tc_serialisation'
8
8
  require 'tc_operation_request'
9
9
  require 'tc_item_search'
10
10
  require 'tc_multiple_operation'
11
+ require 'tc_vehicle_operations'
11
12
 
12
13
  require 'tc_shopping_cart'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-aaws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Macdonald
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-10-03 00:00:00 +02:00
12
+ date: 2009-02-20 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -38,6 +38,7 @@ files:
38
38
  - example/item_search3
39
39
  - example/list_lookup1
40
40
  - example/list_search1
41
+ - example/vehicle_search
41
42
  - example/seller_listing_lookup1
42
43
  - example/seller_listing_search1
43
44
  - example/seller_lookup1
@@ -45,6 +46,7 @@ files:
45
46
  - example/similarity_lookup1
46
47
  - example/tag_lookup1
47
48
  - example/transaction_lookup1
49
+ - example/batch_operation
48
50
  - lib/amazon.rb
49
51
  - lib/amazon/aws/search.rb
50
52
  - lib/amazon/aws/cache.rb
@@ -60,6 +62,7 @@ files:
60
62
  - test/tc_shopping_cart.rb
61
63
  - test/ts_aws.rb
62
64
  - test/tc_serialisation.rb
65
+ - test/tc_vehicle_operations.rb
63
66
  - COPYING
64
67
  - NEWS
65
68
  - README
@@ -100,3 +103,4 @@ test_files:
100
103
  - test/tc_shopping_cart.rb
101
104
  - test/ts_aws.rb
102
105
  - test/tc_serialisation.rb
106
+ - test/tc_vehicle_operations.rb