ruby-aaws 0.4.4 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
data/NEWS CHANGED
@@ -1,382 +1,471 @@
1
- $Id: NEWS,v 1.14 2008/10/03 12:00:57 ianmacd Exp $
2
-
3
-
4
- 0.4.4
5
- -----
6
-
7
- It's now possible to have Ruby/AWS use a user configuration file with a name
8
- other than .amazonrc. This is achieved by defining $AMAZONRCFILE. If left
9
- undefined, the default of .amazonrc is used.
10
-
11
- Locations other than $HOME were not being checked for .amazonrc. This bug has
12
- now been fixed.
13
-
14
-
15
- 0.4.3
16
- -----
17
-
18
- $AMAZONRCDIR is now searched for .amazonrc before $HOME and the other
19
- directories. This allows a user-defined location to be used for the user
20
- configuration file.
21
-
22
- There is a new top-level class of exception for Ruby/AWS, Amazon::AmazonError.
23
-
24
- Most non-operational exceptions, such as Amazon::AWS::HTTPError,
25
- Amazon::Config::ConfigError, Amazon::AWS::Search::Request::AccessKeyIdError,
26
- Amazon::AWS::Search::Request::LocaleError and
27
- Amazon::AWS::ShoppingCart::CartError are now immediate subclasses of
28
- AmazonError. Previously, they were subclasses of StandardError.
29
-
30
- Amazon::AWS::Error::AWSError was previously a class that generated exceptions,
31
- but it's now simply a container class derived from AmazonError. All
32
- operational exceptions -- the ones whose class is dynamically created when AWS
33
- returns an error -- are now subclasses of AWSError. Previously, they were
34
- immediate subclasses of StandardError.
1
+ $Id: NEWS,v 1.16 2009/02/20 00:37:15 ianmacd Exp $
2
+
3
+
4
+ 0.5.0 - 2009-01-20
5
+ ------------------
6
+
7
+ 1. The configuration files (/etc/amazonrc and typically ~/.amazonrc) are now
8
+ locale-specific. Global and locale-specific settings can now be placed in
9
+ their own sections. For example:
10
+
11
+ Old style .amazonrc:
12
+
13
+ associate = 'caliban-21'
14
+ locale = 'uk'
15
+ cache = false
16
+ key_id = '0Y44V8FAFNM119C6XYZ2'
17
+
18
+ New style .amazonrc:
19
+
20
+ [global]
21
+ locale = 'uk'
22
+ cache = false
23
+ key_id = '0Y44V8FAFNM119C6XYZ2'
24
+
25
+ [uk]
26
+ associate = 'calibanorg-21'
27
+
28
+ [us]
29
+ associate = 'calibanorg-20'
30
+
31
+
32
+ The old style of configuration is still supported.
35
33
 
36
- This has the advantage of allowing all of the exceptions resulting from
37
- operational errors to be caught by rescuing just the container class,
38
- AWSError.
39
-
34
+ 2. ItemLookup.new and SellerListingLookup.new no longer take a third
35
+ parameter, b_parameters. Instead, the new Operation#batch method can be
36
+ used to create batch operations.
40
37
 
41
- 0.4.2
42
- -----
38
+ Operation#batch can batch multiple operations of any class, not just
39
+ ItemLookup and SellerListingLookup. The only requirement if that all
40
+ batched operations must be of the same class.
43
41
 
44
- The version of the Amazon AWS API requested when performing operations is now
45
- 2008-08-19. This is the latest at the time of writing.
42
+ If you want to send multiple operations of different classes as a single
43
+ request, you must still use the MultipleOperation class.
46
44
 
47
- The exception class Amazon::Config::ConfigError was mysteriously not defined.
45
+ 3. VehiclePartLookup, VehiclePartSearch and VehicleSearch operations (which
46
+ were added in the 2008-08-19 revision of the AWS API, are now supported.
47
+ However, VehiclePartLookup is the only one of these that currently supports
48
+ pagination.
48
49
 
49
- Amazon::Config.new now accepts an optional argument, config_str, which may
50
- contain the string equivalent of a config file's contents. When config_str is
51
- not nil (nil is the default), this string is read instead of /etc/amazonrc and
52
- ~/.amazonrc. This addition is really just to aid unit-testing of the
53
- Amazon::Config class, as Amazon::Config.new never needs to be called by user
54
- code.
50
+ 4. The list of allowable search indices for ItemSearch operations has been
51
+ updated in accordance with the latest AWS documentation.
55
52
 
56
- Config file lines may now contain leading whitespace.
53
+ 5. Parameter checking for ItemSearch operations no longer occurs. It was
54
+ impractical to keep the list of valid parameters concurrent with AWS.
55
+ Related constants have therefore also been removed.
57
56
 
58
- The Amazon::AWS::MAX_PAGES constant has gone, replaced by the PAGINATION hash.
59
- Only ItemSearch should use ItemPage to page through results up to MAX_PAGES
60
- when ALL_PAGES has been requested, but the same approach was attempted for all
61
- types of operation.
62
-
63
- Each operation has its own pagination parameter and its own maximum number of
64
- pages that can be fetched. This is now stored in the Amazon::AWS::PAGINATION
65
- hash.
66
-
67
- Note that ItemLookup has three possible pagination parameters: OfferPage,
68
- VariationPage and ReviewPage. Ruby/AWS uses OfferPage for the purposes of
69
- ALL_PAGES.
70
-
71
- Operations that do not explicitly provide a pagination parameter (or, at
72
- least, those for which there isn't one listed in the AWS Developer's Guide)
73
- use ItemPage and pagination up to page 400. This is likely to throw an
74
- exception, as such operations almost certainly don't support multiple results
75
- pages.
57
+ 6. The version of the AWS API used is now 2009-01-06, the latest at the time
58
+ of writing.
76
59
 
60
+ The configuration file now supports a new global parameter for requesting a
61
+ different version of the API. For example:
77
62
 
78
- 0.4.1
79
- -----
63
+ api = '2008-08-19'
80
64
 
81
- The exception class Amazon::AWS::HTTPError was not actually defined, which
82
- caused an error when an attempt was made to raise it.
65
+ 7. While testing the ability to request a specific version of the AWS API, I
66
+ encountered a new kind of AWS error, the internal error, which is reported
67
+ using a different XML construct to that used for all other error
68
+ conditions.
83
69
 
84
- If you're using Windows, %HOME% typically isn't defined. Therefore, the
85
- following sequence of paths is now searched for your .amazonrc configuration
86
- file:
70
+ I triggered one of these internal errors when I attempted an operation, a
71
+ VehicleSearch, that did not yet exist in the older version of the API that
72
+ I requested.
87
73
 
88
- %HOME%
89
- %HOMEDRIVE% + %HOMEPATH%
90
- %USERPROFILE%
74
+ This type of error now throws a generic Amazon::AWS::Error::AWSError
75
+ exception.
76
+
77
+ It's reasonable to assume that there are other conditions that would cause
78
+ an internal AWS error to occur. These, too, will be raised as an exception.
79
+
80
+ Unfortunately, AWS supplies no information on the cause of such internal
81
+ errors, so Ruby/AWS is unable to pass on any clues to the user.
91
82
 
92
- Choose one of these at your convenience.
93
83
 
94
- The Ruby/AWS gem has been renamed ruby-aaws (from ruby-aws) to avoid a
95
- namespace clash with another project. This clash prevented remote installation
96
- of the gem.
84
+ 0.4.4 - 2008-10-03
85
+ ------------------
97
86
 
87
+ 1. It's now possible to have Ruby/AWS use a user configuration file with a
88
+ name other than .amazonrc. This is achieved by defining $AMAZONRCFILE. If
89
+ left undefined, the default of .amazonrc is used.
98
90
 
99
- 0.4.0
100
- -----
91
+ 2. Locations other than $HOME were not being checked for .amazonrc. This bug
92
+ has now been fixed.
101
93
 
102
- The version of the Amazon AWS API requested when performing operations is now
103
- 2008-06-26. This is the latest at the time of writing.
104
94
 
105
- A new method, Amazon::AWS::ShoppingCart::Cart#cart_get, has been added, to
106
- allow the retrieval of an existing shopping-cart from AWS. This is necessary
107
- when the original Cart object no longer exists.
95
+ 0.4.3 - 2008-09-22
96
+ ------------------
108
97
 
109
- A bug in Amazon::AWS::ShoppingCart::Cart#cart_modify has been fixed, which
110
- caused carts with no items in their active section to raise an exception.
98
+ 1. $AMAZONRCDIR is now searched for .amazonrc before $HOME and the other
99
+ directories. This allows a user-defined location to be used for the user
100
+ configuration file.
111
101
 
102
+ 2. There is a new top-level class of exception for Ruby/AWS,
103
+ Amazon::AmazonError.
112
104
 
113
- 0.3.3
114
- -----
105
+ Most non-operational exceptions, such as Amazon::AWS::HTTPError,
106
+ Amazon::Config::ConfigError,
107
+ Amazon::AWS::Search::Request::AccessKeyIdError,
108
+ Amazon::AWS::Search::Request::LocaleError and
109
+ Amazon::AWS::ShoppingCart::CartError are now immediate subclasses of
110
+ AmazonError. Previously, they were subclasses of StandardError.
115
111
 
116
- YAML.aws_load has been removed. Its functionality is available directly from
117
- Amazon::AWS::AWSObject.yaml_load and it wasn't logical or necessary to
118
- duplicate that in the YAML class itself. There was no corresponding
119
- Marshal.aws_load method, but if there had been, that, too, would have been
120
- removed.
112
+ 3. Amazon::AWS::Error::AWSError was previously a class that generated
113
+ exceptions, but it's now simply a container class derived from AmazonError.
114
+ All operational exceptions -- the ones whose class is dynamically created
115
+ when AWS returns an error -- are now subclasses of AWSError. Previously,
116
+ they were immediate subclasses of StandardError.
121
117
 
122
- Ruby/AWS is finally available as a RubyGems package and can be found here:
118
+ This has the advantage of allowing all of the exceptions resulting from
119
+ operational errors to be caught by rescuing just the container class,
120
+ AWSError.
121
+
123
122
 
124
- http://www.caliban.org/files/ruby/ruby-aws-0.3.3.gem
123
+ 0.4.2 - 2008-09-11
124
+ ------------------
125
125
 
126
- The enclosed Rakefile can be used to build the gem from scratch. First make
127
- sure you have rake and rubygems installed, and then simply type 'rake' in the
128
- top level directory of the archive. The gem will be generated and placed in
129
- the ./pkg subdirectory, from where you can 'sudo gem install' it.
126
+ 1. The version of the Amazon AWS API requested when performing operations is
127
+ now 2008-08-19. This is the latest at the time of writing.
130
128
 
131
- This is my first gem, so bear with me. It appears to work properly, but I
132
- offer no guarantees. One thing that doesn't currently work is installing the
133
- package with gem's -t option to run the supplied unit tests.
129
+ 2. The exception class Amazon::Config::ConfigError was mysteriously not
130
+ defined.
134
131
 
135
- More information about RubyGems can be found here:
132
+ 3. Amazon::Config.new now accepts an optional argument, config_str, which may
133
+ contain the string equivalent of a config file's contents. When config_str
134
+ is not nil (nil is the default), this string is read instead of
135
+ /etc/amazonrc and ~/.amazonrc. This addition is really just to aid
136
+ unit-testing of the Amazon::Config class, as Amazon::Config.new never needs
137
+ to be called by user code.
136
138
 
137
- http://www.rubygems.org/
139
+ 4. Config file lines may now contain leading whitespace.
138
140
 
141
+ 5. The Amazon::AWS::MAX_PAGES constant has gone, replaced by the PAGINATION
142
+ hash. Only ItemSearch should use ItemPage to page through results up to
143
+ MAX_PAGES when ALL_PAGES has been requested, but the same approach was
144
+ attempted for all types of operation.
145
+
146
+ Each operation has its own pagination parameter and its own maximum number
147
+ of pages that can be fetched. This is now stored in the
148
+ Amazon::AWS::PAGINATION hash.
149
+
150
+ Note that ItemLookup has three possible pagination parameters: OfferPage,
151
+ VariationPage and ReviewPage. Ruby/AWS uses OfferPage for the purposes of
152
+ ALL_PAGES.
153
+
154
+ Operations that do not explicitly provide a pagination parameter (or, at
155
+ least, those for which there isn't one listed in the AWS Developer's Guide)
156
+ use ItemPage for pagination up to page 400. In practice, this is likely to
157
+ throw an exception, as such operations almost certainly don't support
158
+ multiple results pages.
139
159
 
140
- 0.3.2
141
- -----
142
160
 
143
- Serialisation, e.g. with Marshal and YAML, has been a problem until now.
144
-
145
- This is because subclasses of Amazon::AWS::AWSObject are created as needed
146
- when XML responses from AWS are parsed. Whilst there is no problem dumping
147
- objects instantiated from such classes, the difficulty arises when later
148
- loading and attempting to reinstantiate them in a new process, because the
149
- dynamic classes from which they were spawned no longer exist.
161
+ 0.4.1 - 2008-08-18
162
+ ------------------
150
163
 
151
- The solution to the problem comes in the form of the new methods
152
- Amazon::AWS::AWSObject.load and Amazon::AWS::AWSObject.yaml_load. Use these as
153
- alternatives to Marshal.load and YAML.load, respectively.
164
+ 1. The exception class Amazon::AWS::HTTPError was not actually defined, which
165
+ caused an error when an attempt was made to raise an instance of it.
154
166
 
167
+ 2. If you're using Windows, %HOME% typically isn't defined. Therefore, the
168
+ following sequence of paths is now searched for your .amazonrc
169
+ configuration file:
155
170
 
156
- 0.3.1
157
- -----
171
+ %HOME%
172
+ %HOMEDRIVE% + %HOMEPATH%
173
+ %USERPROFILE%
174
+
175
+ Choose one of these at your convenience.
158
176
 
159
- This release mostly features refinements to the support for remote
160
- shopping-carts.
177
+ 3. The Ruby/AWS gem has been renamed ruby-aaws (from ruby-aws) to avoid a
178
+ namespace clash with another project. This clash prevented remote
179
+ installation of the gem.
161
180
 
162
- The 'Save For Later' area of remote shopping-carts is now implemented.
163
181
 
164
- Cart#cart_modify now takes an extra parameter, save_for_later. If true, items
165
- are moved from the active to the Save For Later area of the cart. If false,
166
- they are moved in the opposite direction.
182
+ 0.4.0 - 2008-07-05
183
+ ------------------
167
184
 
168
- In both cases, the quantity parameter is ignored, because attempting to pass
169
- it through to AWS results in an error, even though the AWS documentation
170
- claims this can be done to move partial quantities from one area of the cart
171
- to the other.
185
+ 1. The version of the Amazon AWS API requested when performing operations is
186
+ now 2008-06-26. This is the latest at the time of writing.
172
187
 
173
- Cart objects now have a @saved_for_later_items attribute, aliased to
174
- @saved_items and @saved. Take your pick.
188
+ 2. A new method, Amazon::AWS::ShoppingCart::Cart#cart_get, has been added, to
189
+ allow the retrieval of an existing shopping-cart from AWS. This is
190
+ necessary when the original Cart object no longer exists.
175
191
 
176
- @cart_items is now set to [] when Cart.new is called. Previously, it wasn't set
177
- until Cart#cart_create was used, at which time it was set to nil.
178
- @saved_for_later_items is also set to [] by Cart.new.
192
+ 3. A bug in Amazon::AWS::ShoppingCart::Cart#cart_modify has been fixed, which
193
+ caused carts with no items in their active section to raise an exception.
179
194
 
180
- Cart#include? now also returns true if the item being queried is in the Save
181
- For Later area of the cart. Previously, only the active area was inspected.
182
195
 
183
- New methods, Cart#active? and Cart#saved_for_later? (alias Cart#saved?),
184
- return whether or not an item is present in a particular area of the cart. If
185
- the item is present, its CartItemId is returned; otherwise 'false'.
196
+ 0.3.3 - 2008-06-23
197
+ ------------------
186
198
 
187
- A bug that caused shopping-cart transactions to use the cache if one was
188
- requested has been fixed. Shopping-carts should never use the cache under any
189
- circumstances.
199
+ 1. YAML.aws_load has been removed. Its functionality is available directly
200
+ from Amazon::AWS::AWSObject.yaml_load and it wasn't logical or necessary to
201
+ duplicate that in the YAML class itself. There was no corresponding
202
+ Marshal.aws_load method, but if there had been, that, too, would have been
203
+ removed.
190
204
 
191
- Request objects can now have their @cache attribute assigned to. A Cache
192
- object may be directly assigned to it, or you may assign the value 'true'. If
193
- @cache is set to 'true', a Cache object will automatically be assigned to it
194
- the next time @cache is referenced. This is most useful when one wishes to
195
- switch from using no cache to using one, or vice versa.
205
+ 2. Ruby/AWS is finally available as a RubyGems package and can be found here:
196
206
 
197
- Cache#flush_expired invariably threw an exception. This bug has been fixed.
207
+ http://www.caliban.org/files/ruby/ruby-aws-0.3.3.gem
198
208
 
199
- Geolocation of users by host and IP address now raises an
200
- Amazon::Locale::GeoError exception if the host or IP address is unresolvable.
209
+ The enclosed Rakefile can be used to build the gem from scratch. First make
210
+ sure you have rake and rubygems installed, and then simply type 'rake' in
211
+ the top level directory of the archive. The gem will be generated and
212
+ placed in the ./pkg subdirectory, from where you can 'sudo gem install' it.
201
213
 
202
- There's a new Ruby/AWS mailing-list for discussion of the development and
203
- usage of this library:
214
+ This is my first gem, so bear with me. It appears to work properly, but I
215
+ offer no guarantees. One thing that doesn't currently work is installing
216
+ the package with gem's -t option to run the supplied unit tests.
204
217
 
205
- http://www.caliban.org/mailman/listinfo/ruby-aws
218
+ More information about RubyGems can be found here:
206
219
 
220
+ http://www.rubygems.org/
207
221
 
208
- 0.3.0
209
- -----
210
222
 
211
- The version of the Amazon AWS API requested when performing operations is now
212
- 2008-04-07. This is the latest at the time of writing.
223
+ 0.3.2 - 2008-06-17
224
+ ------------------
213
225
 
214
- Remote shopping-carts are now implemented. See the Amazon::AWS::ShoppingCart
215
- module and the Amazon::AWS::ShoppingCart::Cart class in
216
- ./amazon/aws/shoppingcart.rb for more details.
226
+ 1. Serialisation, e.g. with Marshal and YAML, has been a problem until now.
227
+
228
+ This is because subclasses of Amazon::AWS::AWSObject are created as needed
229
+ when XML responses from AWS are parsed. Whilst there is no problem dumping
230
+ objects instantiated from such classes, the difficulty arises when later
231
+ loading and attempting to reinstantiate them in a new process, because the
232
+ dynamic classes from which they were spawned no longer exist.
217
233
 
218
- Basically, the new methods are Cart.new, Cart#cart_create, Cart#cart_add,
219
- Cart#cart_modify and Cart#cart_clear. There's also Cart#each for iterating
220
- over the items in a cart.
234
+ The solution to the problem comes in the form of the new methods
235
+ Amazon::AWS::AWSObject.load and Amazon::AWS::AWSObject.yaml_load. Use these
236
+ as alternatives to Marshal.load and YAML.load, respectively.
221
237
 
222
- This adds the following AWS operations to the list of those supported:
223
238
 
224
- CartCreate
225
- CartAdd
226
- CartModify
227
- CartClear
239
+ 0.3.1 - 2008-06-10
240
+ ------------------
228
241
 
229
- It's currently not possible to update a wishlist at purchase time by referring
230
- to the item's ListItemId when adding it to a cart.
242
+ This release mostly features refinements to the support for remote
243
+ shopping-carts.
231
244
 
232
- It's also currently not possible to add items to the 'Saved For Later' section
233
- of the cart.
245
+ 1. The 'Save For Later' area of remote shopping-carts is now implemented.
234
246
 
235
- A new iterator method, AWSObject#each, yields each |property, value| of the
236
- AWSObject.
247
+ Cart#cart_modify now takes an extra parameter, save_for_later. If true,
248
+ items are moved from the active to the Save For Later area of the cart. If
249
+ false, they are moved in the opposite direction.
237
250
 
238
- The AWSObject and AWSArray classes have received a few new helper methods that
239
- should make AWSObject and single element AWSArray objects behave more akin to
240
- strings when they are being compared with strings, matched against regexes,
241
- etc.
251
+ In both cases, the quantity parameter is ignored, because attempting to
252
+ pass it through to AWS results in an error, even though the AWS
253
+ documentation claims this can be done to move partial quantities from one
254
+ area of the cart to the other.
242
255
 
243
- An otherwise undocumented method, AWSObject#kernel, provides unnested (i.e.
244
- top level) AWSObject objects with a shortcut reference to the data most likely
245
- of interest to the user.
256
+ 2. Cart objects now have a @saved_for_later_items attribute, aliased to
257
+ @saved_items and @saved for brevity. Take your pick.
246
258
 
247
- For example, if a top level AWSObject is formed as the result of an
248
- ItemSearch, one might normally refer to the items returned with something like
249
- this:
259
+ 3. @cart_items is now set to [] when Cart.new is called. Previously, it wasn't
260
+ set until Cart#cart_create was used, at which time it was set to nil.
261
+ @saved_for_later_items is also set to [] by Cart.new.
250
262
 
251
- foo.item_search_response[0].items[0].item
263
+ 4. Cart#include? now also returns true if the item being queried is in the
264
+ Save For Later area of the cart. Previously, only the active area was
265
+ inspected.
252
266
 
253
- AWSObject#kernel allows the same data to be referred to as follows:
267
+ 5. New methods, Cart#active? and Cart#saved_for_later? (alias Cart#saved?),
268
+ return whether or not an item is present in a particular area of the cart.
269
+ If the item is present, its CartItemId is returned; otherwise 'false'.
254
270
 
255
- foo.kernel
271
+ 6. A bug that caused shopping-cart transactions to use the cache if one was
272
+ requested has been fixed. Shopping-carts should never use the cache under
273
+ any circumstances.
256
274
 
257
- The path to the data is programatically determined, so this method only works
258
- for top level AWSObject objects created by a class of operation whose name can
259
- be used to derive the path. This is why this method is not documented.
275
+ 7. Request objects can now have their @cache attribute assigned to. A Cache
276
+ object may be directly assigned to it, or you may assign the value 'true'.
277
+ If @cache is set to 'true', a Cache object will automatically be assigned
278
+ to it the next time @cache is referenced. This is most useful when one
279
+ wishes to switch from using no cache to using one, or vice versa.
260
280
 
261
- When searches are performed, greater efforts are now made to determine whether
262
- Amazon returned any errors. In particular, batch operations and
263
- MultipleOperations may return errors at different locations in the XML tree
264
- than normal operations.
281
+ 8. Cache#flush_expired invariably threw an exception. This bug has been fixed.
265
282
 
266
- A bug that materialised only when using an HTTP proxy has been fixed.
283
+ 9. Geolocation of users by host and IP address now raises an
284
+ Amazon::Locale::GeoError exception if the host or IP address is
285
+ unresolvable.
267
286
 
287
+ There's a new Ruby/AWS mailing-list for discussion of the development and
288
+ usage of this library:
268
289
 
269
- 0.2.0
270
- -----
290
+ http://www.caliban.org/mailman/listinfo/ruby-aws
271
291
 
272
- In previous versions, only 5 types of operation were supported:
273
292
 
274
- BrowseNodeLookup
275
- ItemLookup
276
- ItemSearch
277
- ListSearch
278
- SellerListingSearch
293
+ 0.3.0 - 2008-05-19
294
+ ------------------
279
295
 
280
- This version supports all remaining non-shopping-cart operations:
296
+ 1. The version of the Amazon AWS API requested when performing operations is
297
+ now 2008-04-07. This is the latest at the time of writing.
281
298
 
282
- CustomerContentLookup
283
- CustomerContentSearch
284
- Help
285
- ListLookup
286
- SellerListingSearch
287
- SellerLookup
288
- SimilarityLookup
289
- TagLookup
290
- TransactionLookup
299
+ 2. Remote shopping-carts are now implemented. See the
300
+ Amazon::AWS::ShoppingCart module and the Amazon::AWS::ShoppingCart::Cart
301
+ class in ./amazon/aws/shoppingcart.rb for more details.
291
302
 
292
- Examples of each of these can be found in ./examples/
303
+ Basically, the new methods are Cart.new, Cart#cart_create, Cart#cart_add,
304
+ Cart#cart_modify and Cart#cart_clear. There's also Cart#each for iterating
305
+ over the items in a cart.
293
306
 
294
- It is hoped that shopping-carts will make their debut in the next release of
295
- Ruby/AWS.
307
+ This adds the following AWS operations to the list of those supported:
296
308
 
297
- One can now use a Symbol for search indices and hash keys when instantiating
298
- operation objects and response group objects.
309
+ CartCreate
310
+ CartAdd
311
+ CartModify
312
+ CartClear
299
313
 
300
- For example:
314
+ It's currently not possible to update a wishlist at purchase time by
315
+ referring to the item's ListItemId when adding it to a cart.
301
316
 
302
- is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
303
- rg = ResponseGroup.new( 'Large' )
317
+ It's also currently not possible to add items to the 'Saved For Later'
318
+ section of the cart.
304
319
 
305
- can now be written like this:
320
+ 3. A new iterator method, AWSObject#each, yields each |property, value| of the
321
+ AWSObject.
306
322
 
307
- is = ItemSearch.new( :Books, { :Title => 'Ruby' } )
308
- rg = ResponseGroup.new( :Large )
323
+ 4. The AWSObject and AWSArray classes have received a few new helper methods
324
+ that should make AWSObject and single element AWSArray objects behave more
325
+ akin to strings when they are being compared with strings, matched against
326
+ regexes, etc.
309
327
 
310
- It's up to you which form you use. The Symbol form saves one character. :-)
328
+ 5. An otherwise undocumented method, AWSObject#kernel, provides unnested (i.e.
329
+ top level) AWSObject objects with a shortcut reference to the data most
330
+ likely of interest to the user.
311
331
 
312
- AWSObject#to_s has been improved to provide something better looking. There's
313
- still room for improvement, though.
332
+ For example, if a top level AWSObject is formed as the result of an
333
+ ItemSearch, one might normally refer to the items returned with something
334
+ like this:
314
335
 
315
- AWSObject#to_i has been added. This allows, for example, AWSObjects to be used
316
- with the %d format specifier in formatted strings. It's up to you, though, to
317
- know when an AWSObject can be expected to contain a String that's usable as an
318
- Integer.
336
+ foo.item_search_response[0].items[0].item
319
337
 
320
- Objects of a class whose name matches AWSObject::.*Image typically have a @url
321
- attribute that points to the URL of the image in question. Such objects now
322
- have a #get method, which can be used to retrieve the image in question. This
323
- method takes a single parameter, an integer precentage, which causes the
324
- retrieved image to be overlayed with a discount icon.
338
+ AWSObject#kernel allows the same data to be referred to as follows:
325
339
 
326
- Various compatibility fixes were made to allow Ruby/AWS to work under Ruby
327
- 1.9. The use of Ruby/AWS with this version is still not recommended, however.
328
- For one thing, Ruby 1.9 seems to use #inspect in places that Ruby 1.8 used
329
- #to_s.
340
+ foo.kernel
330
341
 
342
+ The path to the data is programatically determined, so this method only
343
+ works for top level AWSObject objects created by a class of operation whose
344
+ name can be used to derive the path. This is why this method is not
345
+ mentioned in the RDoc documentation.
331
346
 
332
- 0.1.0
333
- -----
347
+ 6. When searches are performed, greater efforts are now made to determine
348
+ whether Amazon returned any errors. In particular, batch operations and
349
+ MultipleOperations may return errors at different locations in the XML tree
350
+ than normal operations.
334
351
 
335
- Version 0.1.0 of Ruby/AWS has undergone fundamental changes from the previous,
336
- very crude versions, 0.0.1 and 0.0.2.
352
+ 7. A bug that materialised only when using an HTTP proxy has been fixed.
337
353
 
338
- For one thing, the AWS XML parser has been completely rewritten. In this new
339
- version, classes are dynamically generated as required, based on the elements
340
- present in the XML pages returned by AWS.
341
354
 
342
- Previous versions of Ruby/AWS (and also Ruby/Amazon), manually defined most
343
- of these classes, based on Amazon's developer documentation and examination of
344
- AWS XML reponses. This time-consuming, unwieldy and unnecessary approach was
345
- largely the result of my own lack of aptitude with the Ruby REXML library.
355
+ 0.2.0 - 2008-04-28
356
+ ------------------
346
357
 
347
- While these manually defined classes accounted for much of the data returned
348
- by AWS, a smaller section of the data was, nevertheless, dynamically converted
349
- to Ruby data structures. This mix of manually and automatically treated
350
- objects led to inconsistencies in the Ruby representation of the hierarchical
351
- XML structure. This meant that it was not quite possible to look at an AWS XML
352
- response and reliably determine how the resulting Ruby data structure would
353
- look.
358
+ 1. In previous versions, only 5 types of operation were supported:
359
+
360
+ BrowseNodeLookup
361
+ ItemLookup
362
+ ItemSearch
363
+ ListSearch
364
+ SellerListingSearch
365
+
366
+ This version supports all remaining non-shopping-cart operations:
367
+
368
+ CustomerContentLookup
369
+ CustomerContentSearch
370
+ Help
371
+ ListLookup
372
+ SellerListingSearch
373
+ SellerLookup
374
+ SimilarityLookup
375
+ TagLookup
376
+ TransactionLookup
377
+
378
+ Examples of each of these can be found in ./examples/
379
+
380
+ It is hoped that shopping-carts will make their debut in the next release
381
+ of Ruby/AWS.
354
382
 
355
- That inconsistency has been ironed out in version 0.1.0. As of now,
356
- _everything_ is dynamically generated from the AWS XML response. All manual
357
- class definitions have been removed and all classes are now defined at the
358
- time they first need to be instantiated.
383
+ 2. One can now use a Symbol for search indices and hash keys when
384
+ instantiating operation objects and response group objects.
359
385
 
360
- This has the following advantages:
386
+ For example:
361
387
 
362
- - Changes in the structure of AWS XML responses will not break Ruby/AWS. They
363
- may break user code (if, for example, you depend on the presence of a piece
364
- of data that later disappears from AWS responses [and even this should not
365
- happen, because AWS v4 has a versioned API]), but they will not break the
366
- library. The library will always create whichever classes are needed to
367
- represent any given XML structure returned by AWS.
388
+ is = ItemSearch.new( 'Books', { 'Title' => 'Ruby' } )
389
+ rg = ResponseGroup.new( 'Large' )
368
390
 
369
- - Changes in the structure of AWS XML that results in new data being
370
- included in responses will automatically cause said data to be made
371
- available via Ruby/AWS. If, for example, Amazon starts to return data about
372
- the duration of each CD in their catalogue, perhaps using a <Duration> tag,
373
- foo.duration would automatically start to return that property.
391
+ can now be written like this:
374
392
 
375
- - It should be faster, but I haven't verified this.
393
+ is = ItemSearch.new( :Books, { :Title => 'Ruby' } )
394
+ rg = ResponseGroup.new( :Large )
376
395
 
377
- Multiple operations are now supported.
396
+ It's up to you which form you use. The Symbol form saves one character. :-)
378
397
 
379
- Geolocation of locale is now working.
398
+ 3. AWSObject#to_s has been improved to provide something better looking.
399
+ There's still room for improvement, though.
400
+
401
+ 4. AWSObject#to_i has been added. This allows, for example, AWSObjects to be
402
+ used with the %d format specifier in formatted strings. It's up to you,
403
+ though, to know when an AWSObject can be expected to contain a String
404
+ that's usable as an Integer.
380
405
 
381
- Documentation in this version has been radically improved, but is still
382
- lacking.
406
+ 5. Objects of a class whose name matches AWSObject::.*Image typically have a
407
+ @url attribute that points to the URL of the image in question. Such
408
+ objects now have a #get method, which can be used to retrieve the image in
409
+ question. This method takes a single parameter, an integer precentage,
410
+ which causes the retrieved image to be overlayed with a discount icon.
411
+
412
+ 6. Various compatibility fixes were made to allow Ruby/AWS to work under Ruby
413
+ 1.9. The use of Ruby/AWS with this version is still not recommended,
414
+ however. For one thing, Ruby 1.9 seems to use #inspect in places that Ruby
415
+ 1.8 used #to_s.
416
+
417
+
418
+ 0.1.0 - 2008-04-11
419
+ ------------------
420
+
421
+ 1. Version 0.1.0 of Ruby/AWS has undergone fundamental changes from the
422
+ previous, very crude versions, 0.0.1 and 0.0.2.
423
+
424
+ For one thing, the AWS XML parser has been completely rewritten. In this
425
+ new version, classes are dynamically generated as required, based on the
426
+ elements present in the XML pages returned by AWS.
427
+
428
+ Previous versions of Ruby/AWS (and also Ruby/Amazon), manually defined most
429
+ of these classes, based on Amazon's developer documentation and examination
430
+ of AWS XML reponses. This time-consuming, unwieldy and unnecessary approach
431
+ was largely the result of my own lack of aptitude with the Ruby REXML
432
+ library.
433
+
434
+ While these manually defined classes accounted for much of the data
435
+ returned by AWS, a smaller section of the data was, nevertheless,
436
+ dynamically converted to Ruby data structures. This mix of manually and
437
+ automatically treated objects led to inconsistencies in the Ruby
438
+ representation of the hierarchical XML structure. This meant that it was
439
+ not quite possible to look at an AWS XML response and reliably determine
440
+ how the resulting Ruby data structure would look.
441
+
442
+ That inconsistency has been ironed out in version 0.1.0. As of now,
443
+ _everything_ is dynamically generated from the AWS XML response. All manual
444
+ class definitions have been removed and all classes are now defined at the
445
+ time they first need to be instantiated.
446
+
447
+ This has the following advantages:
448
+
449
+ - Changes in the structure of AWS XML responses will not break Ruby/AWS.
450
+ They may break user code (if, for example, you depend on the presence
451
+ of a piece of data that later disappears from AWS responses [and even
452
+ this should not happen, because AWS v4 has a versioned API]), but they
453
+ will not break the library. The library will always create whichever
454
+ classes are needed to represent any given XML structure returned by
455
+ AWS.
456
+
457
+ - Changes in the structure of AWS XML that results in new data being
458
+ included in responses will automatically cause said data to be made
459
+ available via Ruby/AWS. If, for example, Amazon starts to return data
460
+ about the duration of each CD in their catalogue, perhaps using a
461
+ <Duration> tag, foo.duration would automatically start to return that
462
+ property.
463
+
464
+ - It should be faster, but I haven't verified this.
465
+
466
+ 2. Multiple operations are now supported.
467
+
468
+ 3. Geolocation of locale is now working.
469
+
470
+ 4. Documentation in this version has been radically improved, but is still
471
+ lacking.