$Id: NEWS,v 1.4 2004/02/08 06:47:31 ianmacd Exp $


0.4.0, 2004-02-07

- New instance method Amazon::Search::Request#blended_search supports
  blended searches, which return products from up to 15 Amazon categories.

- New instance method Amazon::Search::Request#wishlist_search supports
  wishlist searches, although these are currently broken on Amazon's AWS
  servers.

- New Amazon::Search::Exchange module supports exchange searches. Exchange
  items are those offered for sale by third-parties. This module allows you
  to search for them by their unique ID.

- New Amazon::Search::Offerings module supports searching for offerings.
  Offerings are products sold by third-party sellers. This module allows you
  to search for them by their ASIN.

- New Amazon::Search::Seller module supports seller profile searches.

- New Amazon::Search::Exchange::ThirdParty module supports third party
  product searches. This allows you to find all products for sale by a
  given seller.

- New Amazon::BabyRegistry module generates HTML form for adding an item to a
  baby registry.

- New Amazon::ShoppingCart module generates HTML form for adding items to a
  shopping cart.

- New Amazon::WeddingRegistry module generates HTML form for adding an item to
  a wedding registry.

- New Amazon::Wishlist module generates HTML form for adding an item to a
  wishlist.

- New Amazon::Product#to_s method allows for easy human-friendly printing
  of products.

- Amazon::Search::Response#parse and other such #parse methods in subclasses
  can now act as iterators to an optional block, e.g.

  products.parse {|p| puts p}

- Amazon::Search::Request#similarity_search now allows up to 5 ASINs to be
  searched for. These may be passed as a comma- or space-separaterd string,
  or as an array of strings.

- Amazon::Search::Request methods #author_search, #keyword_search and
  #power_search now support an extra parameter at the end of the parameter
  list. Set this to Amazon::Search::ALL_EDITIONS to retrieve multiple editions
  of the same book or Amazon::Search::SINGLE_EDITION to retrieve just the
  latest. The default is SINGLE_EDITION.

- Amazon::Search::Response objects now contain new instance variables
  @total_results and @total_pages for tracking the total number of results and
  pages for each search.

- New exception class Amazon::Search::HTTPError.

- The URL of the page to be fetched is now printed if Ruby is run with -d.

- Amazon::Marketplace::Product has been renamed Amazon::Exchange::Product.

- Exception Amazon::Search::Request::SearchError has moved to
  Amazon::Search::SearchError, as it's useful to the Response class, too.

- Amazon::Search::Exchange::Marketplace#parse returns nil if no listings
  were found.

- Amazon::Search::Exchange::Marketplace#parse no longer returns a two-
  element array, consisting of an array of products and the number of open
  listings. Instead, a singleton array of products is returned, with the
  number of open listings available as @openlistings.

- Amazon::Search::Exchange::Marketplace class methods renamed:

  Marketplace.keyword_searches	->  Marketplace.keyword_search_types
  Marketplace.geos		->  Marketplace.geo_types
  Marketplace.sorts		->  Marketplace.sort_types
  Marketplace.indices		->  Marketplace.index_types

- New classes Amazon::Offerings::Product, Amazon::Blended::ProductLine,
  Amazon::Feedback, Amazon::ThirdPartyInfo and Amazon::Seller. These classes
  are needed by the new types of search that have been added in this version.

- Search facilities must now be specifically called, using:

  require 'amazon'
  require 'amazon/search'

- Fixed bad exception raising on HTTP errors.

- Fixed bug with searches using 'software' mode in 'uk' locale.

- Fixed a bug in ALL_PAGES requests that caused the first page of results
  to be fetched twice, resulting in duplicate products. The same bug caused
  the last page to not be returned at all.

- Improvements to RDoc documentation.

- Lots of new unit tests.


0.3.0, 2004-01-31

- Amazon::Search::Request#search has been subdivided into #keyword_search,
  #node_search, #asin_search, #upc_search, #author_search, #power_search,
  #artist_search, #actor_search, #director_search, #manufacturer_search,
  #listmania_search and #similarity_search.
  
  Rather than passing nil parameters where arguments were irrelevant, each of
  these new methods requires only those arguments that make sense for the
  particular type of search it supports.

- New module Amazon::Search::Marketplace for Amazon Marketplace searches.

- New product class Amazon::Search::Marketplace::Product.

- New instance methods Amazon::Search::Marketplace#keyword_search and
  Amazon::Search::Marketplace#listing_search for marketplace searches.
  These return Amazon::Search::Marketplace::Response objects.

- New class methods Amazon::Search::Marketplace.keyword_searches,
  Amazon::Search::Marketplace.geos, Amazon::Search::Marketplace.sorts and
  Amazon::Search::Marketplace.indices for determining valid keyword search
  types, geos types, sort types and index types when doing a marketplace
  search.

- The international properties amazon.co.uk, amazon.de and amazon.co.jp are
  now also supported via a 3rd parameter to Amazon::Search::Request.new. A two
  letter string, 'us', 'uk', 'de' or 'jp', can be passed. Request objects
  now contain a new instance variable, @locale, to track this when performing
  searches.

- Amazon::Search::Request.new can now take a 4th argument, which is a
  user-agent to pass on to Amazon's Web Services

- New Amazon::NAME constant gives library name.

- ALL_PAGES searches are now returned more efficiently, as XML parsing
  can be deferred until Amazon::Search#parse is used.

- UPC search now accepts extra modes: classical, software, dvd, vhs,
  electronics, pc-hardware.

- Price range restrictions are now supported on relevant searches.

- Single page ALL_PAGES searches now yield a single-element array, rather than
  directly returning an Amazon::Search::Response object.

- Exception classes are now subclasses of StandardError, not RuntimeError.

- Better error-checking and exception raising all around.


0.2.0, 2004-01-22

- The Associates ID is now optional in Amazon::Search::Request.new. As such,
  it has swapped places with the developer token as the second parameter. If
  you don't have an Associates ID, don't pass the second argument to the
  method and a default ('webservices-20') value will be used instead.

- When passing an explicit page number to Amazon::Search::Request#search, you
  can now use the constant Amazon::Search::Request::ALL_PAGES as the page
  number. This will cause all pages pertaining to your search to be returned.
  This can take quite some time for non-specific searches.

- If ALL_PAGES is given, an Array of Amazon::Search::Responses will be
  returned instead of a single Amazon::Search::Response, unless your search
  returns a single page.

- Search types that logically have no use for the 'page' parameter now ignore
  it if it is specified. The searches in question are ASIN, UPC and Listmania
  searches.

- The Amazon::Search::TypeError exception class has been added to catch
  non-existent search types.

- @avgcustomerrating was not being set in Amazon::Search::Review objects.

- There are new constants Amazon::Search::Request::HEAVY,
  Amazon::Search::Request::LITE (and Amazon::Search::Request::LIGHT, just for
  the sake of correct spelling).

- Amazon::Search::Request::POWER_SEARCH is supported as a new search type.

- Ruby/Amazon now makes calls to version 3 of the Amazon Web Services API.

- The Amazon::Search::Review struct is now a real class. This was done in
  order to make its instance variables read-only, which they now are.

0.1.0, 2004-01-17

- first public release
