Version: 0.1
Type: Full Script
Category: Other
License: GNU General Public License
Description: This is a API class to interface with the new AWS 4.0 Beta interface. This script requires CURL, SimpleXML, and PHP5.
:::::::BEGIN aws4.inc.php::::::::::::::: <? /** * * aws4.inc.php Amazon.com Webservices API for version 4.0-Beta Version: 0.1 * by Jason Ragsdale (jrags (at) jasrags (dot) net) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ class aws { public $Debug = false; protected $baseURL = ''; protected $Country = 'US'; //Default to US protected $Service = 'AWSProductData'; //This is the only Service option at this time protected $SubscriptionId = '[YourIdHere]'; //Enter your SubscriptionId here, You can register for one at http://www.amazon.com/gp/aws/sdk/104-3261299-9963915 protected $Operation = 'ItemSearch'; //Your default operation protected $SearchIndex = ''; protected $Keywords = ''; protected $Title = ''; protected $Power = ''; protected $Artist = ''; protected $Author = ''; protected $Actor = ''; protected $Director = ''; protected $AudienceRating = ''; protected $Manufacturer = ''; protected $MusicLabel = ''; protected $Composer = ''; protected $Publisher = ''; protected $Brand = ''; protected $Conductor = ''; protected $Orchestra = ''; protected $TextStream = ''; protected $ItemPage = ''; protected $Sort = ''; protected $City = ''; protected $Cuisine = ''; protected $Neighborhood = ''; protected $MinimumPrice = ''; protected $MaximumPrice = ''; protected $MerchantId = ''; protected $Condition = ''; protected $DeliveryMethod = ''; protected $AssociateTag = ''; protected $Style = ''; protected $ContentType = ''; protected $InputContentEncoding = ''; protected $Validate = ''; protected $Version = ''; protected $XMLEscaping = ''; protected $ResponseGroup = ''; protected $Result = ''; function aws() { } /** * Wed Sep 01 11:10:48 CDT 2004 11:10:48 - Ragsdale, Jason * * setBaseURL must be called when starting a new query. * */ function setBaseURL() { /** * Tue Aug 31 16:04:50 CDT 2004 16:04:50 - Ragsdale, Jason * * Valid Country Codes for the base URL are: * US: United States * UK: United Kingdom * DE: Germany * JP: Japan * */ if ($this->Country == 'US') $this->baseURL = 'http://aws-beta.amazon.com/onca/xml?Service='.$this->Service; if ($this->Country == 'UK') $this->baseURL = 'http://aws-beta.amazon.co.uk/onca/xml?Service='.$this->Service; if ($this->Country == 'DE') $this->baseURL = 'http://aws-beta.amazon.de/onca/xml?Service='.$this->Service; if ($this->Country == 'JP') $this->baseURL = 'http://aws-beta.amazon.co.jp/onca/xml?Service='.$this->Service; } function setCountry($Country) { /** * Wed Sep 01 11:11:58 CDT 2004 11:11:58 - Ragsdale, Jason * * Use this to set the country you are pulling results for. * * Country Options: * US (Default) * UK * DE * JP * */ $this->Country = $Country; } function getCountry() { return $this->Country; } function assembleURL() { /** * Tue Aug 31 16:06:47 CDT 2004 16:06:47 - Ragsdale, Jason * * This function will be called form the fetch method to make sure our URL is valid. * */ if ($this->SubscriptionId) $this->baseURL .= '&SubscriptionId='.$this->SubscriptionId; if ($this->Operation) $this->baseURL .= '&Operation='.$this->Operation; if ($this->SearchIndex) $this->baseURL .= '&SearchIndex='.$this->SearchIndex; if ($this->Keywords) $this->baseURL .= '&Keywords='.$this->Keywords; if ($this->Title) $this->baseURL .= '&Title='.$this->Title; if ($this->Power) $this->baseURL .= '&Power='.$this->Power; if ($this->Artist) $this->baseURL .= '&Artist='.$this->Artist; if ($this->Author) $this->baseURL .= '&Author='.$this->Author; if ($this->Actor) $this->baseURL .= '&Actor='.$this->Actor; if ($this->Director) $this->baseURL .= '&Director='.$this->Director; if ($this->AudienceRating) $this->baseURL .= '&AudienceRating='.$this->AudienceRating; if ($this->Manufacturer) $this->baseURL .= '&Manufacturer='.$this->Manufacturer; if ($this->MusicLabel) $this->baseURL .= '&MusicLabel='.$this->MusicLabel; if ($this->Composer) $this->baseURL .= '&Composer='.$this->Composer; if ($this->Publisher) $this->baseURL .= '&Publisher='.$this->Publisher; if ($this->Brand) $this->baseURL .= '&Brand='.$this->Brand; if ($this->Conductor) $this->baseURL .= '&Conductor='.$this->Conductor; if ($this->Orchestra) $this->baseURL .= '&Orchestra='.$this->Orchestra; if ($this->TextStream) $this->baseURL .= '&TextStream='.$this->TextStream; if ($this->ItemPage) $this->baseURL .= '&ItemPage='.$this->ItemPage; if ($this->Sort) $this->baseURL .= '&Sort='.$this->Sort; if ($this->City) $this->baseURL .= '&City='.$this->City; if ($this->Cuisine) $this->baseURL .= '&Cuisine='.$this->Cuisine; if ($this->Neighborhood) $this->baseURL .= '&Neighborhood='.$this->Neighborhood; if ($this->MinimumPrice) $this->baseURL .= '&MinimumPrice='.$this->MinimumPrice; if ($this->MaximumPrice) $this->baseURL .= '&MaximumPrice='.$this->MaximumPrice; if ($this->MerchantId) $this->baseURL .= '&MerchantId='.$this->MerchantId; if ($this->Condition) $this->baseURL .= '&Condition='.$this->Condition; if ($this->DeliveryMethod) $this->baseURL .= '&DeliveryMethod='.$this->DeliveryMethod; if ($this->AssociateTag) $this->baseURL .= '&AssociateTag='.$this->AssociateTag; if ($this->Style) $this->baseURL .= '&Style='.$this->Style; if ($this->ContentType) $this->baseURL .= '&ContentType='.$this->ContentType; if ($this->InputContentEncoding) $this->baseURL .= '&InputContentEncoding='.$this->InputContentEncoding; if ($this->Validate) $this->baseURL .= '&Validate='.$this->Validate; if ($this->Version) $this->baseURL .= '&Version='.$this->Version; if ($this->XMLEscaping) $this->baseURL .= '&XMLEscaping='.$this->XMLEscaping; if ($this->ResponseGroup) $this->baseURL .= '&ResponseGroup='.$this->ResponseGroup; return; } function fetch() { /** * Tue Aug 31 16:09:19 CDT 2004 16:09:19 - Ragsdale, Jason * * This is the function to send the request to amazon Via CURL * and store the XML result. * */ //Assemble the URL before fetching it. $this->assembleURL(); //Create our local FilePointer and fetch the XML into it. $this->fp = fopen(md5($this->baseURL), 'w'); $this->ch = curl_init(); curl_setopt($this->ch, CURLOPT_URL, $this->baseURL); curl_setopt($this->ch, CURLOPT_HEADER, 0); curl_setopt($this->ch, CURLOPT_FILE, $this->fp); curl_setopt($this->ch, CURLOPT_TIMEOUT, 10); $this->result = curl_exec($this->ch); curl_close($this->ch); fclose($this->fp); //Load the XML from the temp file. $this->xml = simplexml_load_file(md5($this->baseURL)); //Remove the temp file after load of the xml data unlink(md5($this->baseURL)); //Check the XML for errors, if so, throw. try { $this->checkXmlError(); } catch (Exception $e) { echo $e->getMessage(); } } function getBaseURL() { return $this->baseURL; } function setService($Service) { /** * Wed Sep 01 11:09:02 CDT 2004 11:09:02 - Ragsdale, Jason * * The service parameter is required for all AWS Requests. It should always be set to AWSProductData. * * Service Options: * AWSProductData * */ $this->Service = $Service; } function getService() { return $this->Service; } function setSubscriptionId($SubscriptionId) { /** * Wed Sep 01 11:08:06 CDT 2004 11:08:06 - Ragsdale, Jason * * The SubscriptionId parameter must be included in every AWS request. The value of * this parameter must be the subscription ID you are assigned when you sign up to use * AWS. Your subscription ID is connected to your AWS developer account and represents * a free subscription to AWS. * * SubscriptionId Options: * Your Amazon-assigned subscription ID * */ $this->SubscriptionId = $SubscriptionId; } function getSubscriptionId() { return $this->SubscriptionId; } function setOperation($Operation) { /** * Wed Sep 01 11:07:01 CDT 2004 11:07:01 - Ragsdale, Jason * * Use the Operation parameter to specify the name of the operation you would like * to call. To access the ItemSearch operation, set the Operation parameter to ItemSearch. * * Operation Options: * ItemSearch * ItemLookup * SimilarityLookup * */ $this->Operation = $Operation; } function getOperation() { return $this->Operation; } function setSearchIndex($SearchIndex) { /** * Tue Aug 31 16:10:13 CDT 2004 16:10:13 - Ragsdale, Jason * * Use the SearchIndex parameter to specify the Amazon store you want products from. * The list of available SearchIndex values, listed by locale, can be found on the * search index values page. * * If SearchIndex is set to "MusicTracks," the number of items returned is the total * number of tracks rather than the number of ASINs in which the tracks were found. * * However, ItemSearch requests in the MusicTracks index return information based on * ASIN, and AWS never repeats an ASIN in a response. Because of these two facts, the * TotalResults value does not reflect the actual number of Item elements in the response * when two or more tracks are from the same ASIN. * * Similarly, if two or more tracks are from the same ASIN, it is possible that the TotalPages * value is greater than the actual number of pages. * Search index options: * Blended (US UK DE JP) * Books (US UK DE JP) * ForeignBooks ( DE JP) * Music (US UK DE JP) * Classical (US UK DE JP) * DigitalMusic (US ) * MusicTracks (US UK DE JP) * DVD (US UK DE JP) * Video (US UK DE JP) * VHS (US UK DE JP) * Toys (US UK ) * Apparel (US ) * Baby (US ) * PCHardware (US DE ) * VideoGames (US UK DE JP) * Software (US UK DE JP) * SoftwareVideoGames ( UK DE ) * Electronics (US UK DE JP) * Photo (US DE ) * Tools (US DE ) * OfficeProducts (US ) * Magazines (US DE ) * SportingGoods (US ) * OutdoorLiving (US UK DE ) * Kitchen (US UK DE JP) * HomeGarden ( UK DE ) * GourmetFood (US ) * HealthPersonalCare (US UK DE ) * Wireless (US ) * Wireless Accessories (US ) * Miscellaneous (US ) * Restaurants (US ) * Jewelry (US ) * */ $this->SearchIndex = $SearchIndex; } function getSearchIndex() { return $this->SearchIndex; } function setKeywords($Keywords) { /** * Wed Sep 01 11:04:29 CDT 2004 11:04:29 - Ragsdale, Jason * * Use the Keywords parameter to refine your item search based on specific * words or phrases. AWS Product data will match the word or phrase you * include in your request against various product fields, including product * title, author, artist, description, manufacturer, etc. * * Keywords Options: * A Keywords String * */ $this->Keywords = urlencode($Keywords); } function getKeywords() { return $this->Keywords; } function setResponseGroup($ResponseGroup) { /** * Tue Aug 31 16:18:34 CDT 2004 16:18:34 - Ragsdale, Jason * * Use this parameter to specify which response group(s), or group(s) of * data elements, you would like AWS to return to you. * * For REST requests, the ResponseGroup parameter can be a single value * or a comma-delimited list. * * Response Group Options: * BrowseNodes * Cart * CartSimilarities * CustomerFull * CustomerInfo * CustomerLists * CustomerReviews * EditorialReview * Help * Images * ItemAttributes * ItemIds * Large * ListFull * ListInfo * ListItems * ListmaniaLists * ListMinimum * Medium * OfferFull * Offers * OfferSummary * Request * Reviews * SalesRank * Seller * SellerListing * Similarities * Small * Tracks * TransactionDetails * VariationMinimum * Variations * VariationSummary * */ $this->ResponseGroup = $ResponseGroup; } function getResponseGroup() { return $this->ResponseGroup; } function setTitle($Title) { /** * Wed Sep 01 11:03:52 CDT 2004 11:03:52 - Ragsdale, Jason * * Use the Title parameter when you want to query against product titles only. * You may use all or part of a title in your query. * * When SearchIndex equals MusicTracks, the Title parameter allows you to search * by song title. * * Title Options: * A Title String * */ $this->Title = $Title; } function getTitle() { return $this->Title; } function setPower($Power) { /** * Wed Sep 01 11:02:38 CDT 2004 11:02:38 - Ragsdale, Jason * * Use the Power parameter to perform book searches on Amazon.com using a * complex query string. * * For example the query "author:ambrose" returns a list of books that include * "Ambrose" in the author name. A query of "subject:history and (spain or mexico) * and not military and language:spanish" would return a list of books in the * Spanish language on the subject of either Spanish or Mexican history, excluding * all items with military in their subject. * * Query keys that may be used to build Power queries include: asin, author, * author-exact, author-begins, keywords, keywords-begin, language, publisher, * subject, subject-words-begin, subject-begins, title, title-words-begin, and * title-begins. * * The Power parameter can only be used when SearchIndex equals Books. * * Please see this page on Amazon for more information about Power search: * http://www. amazon.com/exec/obidos/ats-query-page#powersearch. * * Power Options: * A Power Query String * */ $this->Power = $Power; } function getPower() { return $this->Power; } function setArtist($Artist) { /** * Wed Sep 01 11:01:42 CDT 2004 11:01:42 - Ragsdale, Jason * * Use the Artist parameter to refine your search by Artist name. * You may use all or part of an Artist's name in your query. * * Artist Option: * An Artist Name String * */ $this->Artist = $Artist; } function getArtist() { return $this->Artist; } function setAuthor($Author) { /** * Wed Sep 01 11:01:39 CDT 2004 11:01:39 - Ragsdale, Jason * * Use the Author parameter to refine your search by Author name. * You may use all or part of an Author's name in your query. * * Author Option: * An Author Name String * */ $this->Author = $Author; } function getAuthor() { return $this->Author; } function setActor($Actor) { /** * Wed Sep 01 11:01:37 CDT 2004 11:01:37 - Ragsdale, Jason * * Use the Actor parameter to refine your search by Actor name. * You may use all or part of an Actor's name in your query. * * Actor Option: * An Actor Name String * */ $this->Actor = $Actor; } function getActor() { return $this->Actor; } function setDirector($Director) { /** * Wed Sep 01 11:01:34 CDT 2004 11:01:34 - Ragsdale, Jason * * Use the Director parameter to refine your search by Director name. * You may use all or part of an Director's name in your query. * * Director Option: * An Director Name String * */ $this->Director = $Director; } function getDirector() { return $this->Director; } function setAudienceRating($AudienceRating) { /** * Wed Sep 01 10:59:57 CDT 2004 10:59:57 - Ragsdale, Jason * * Use the AudienceRating parameter to filter movie product search results * by the expected audience maturity level. Amazon.com values are based * upon MPAA (Motion Picture Association of America) ratings. Amazon.de * values are based upon age. You may specify one or more values in a * comma-separated list in a REST request or using multiple elements in * a SOAP request. * * AudienceRating Options: * Amazon.com Values: * G * PG * PG-13 * R * NC-17 * NR * Unrated * Amazon.de Values: * 6 * 12 * 16 * */ $this->AudienceRating = $AudienceRating; } function getAudienceRating() { return $this->AudienceRating; } function setManufacturer($Manufacturer) { /** * Wed Sep 01 10:59:37 CDT 2004 10:59:37 - Ragsdale, Jason * * Use the Manufacturer parameter to refine your search by Manufacturer name. * You may use all or part of an Manufacturer's name in your query. * * Manufacturer Option: * An Manufacturer Name String * */ $this->Manufacturer = $Manufacturer; } function getManufacturer() { return $this->Manufacturer; } function setMusicLabel($MusicLabel) { /** * Wed Sep 01 10:58:42 CDT 2004 10:58:42 - Ragsdale, Jason * * Use the MusicLabel parameter to refine your search by MusicLabel name. * You may use all or part of an MusicLabel's name in your query. * * MusicLabel Option: * An MusicLabel Name String * */ $this->MusicLabel = $MusicLabel; } function getMusicLabel() { return $this->MusicLabel; } function setComposer($Composer) { /** * Wed Sep 01 10:58:37 CDT 2004 10:58:37 - Ragsdale, Jason * * Use the Composer parameter to refine your search by Composer name. * You may use all or part of an Composer's name in your query. * * Composer Option: * An Composer Name String * */ $this->Composer = $Composer; } function getComposer() { return $this->Composer; } function setPublisher($Publisher) { /** * Wed Sep 01 10:58:25 CDT 2004 10:58:25 - Ragsdale, Jason * * Use the Publisher parameter to refine your search by Publisher name. * You may use all or part of an Publisher's name in your query. * * Publisher Option: * An Publisher Name String * */ $this->Publisher = $Publisher; } function getPublisher() { return $this->Publisher; } function setBrand($Brand) { /** * Wed Sep 01 10:58:18 CDT 2004 10:58:18 - Ragsdale, Jason * * Use the Brand parameter to refine your search by Brand name. * You may use all or part of an Brand's name in your query. * * Brand Option: * An Brand Name String * */ $this->Brand = $Brand; } function getBrand() { return $this->Brand; } function setConductor($Conductor) { /** * Wed Sep 01 10:57:35 CDT 2004 10:57:35 - Ragsdale, Jason * * Use the Conductor parameter to refine your search by Conductor name. * You may use all or part of an Conductor's name in your query. * * Conductor Option: * An Conductor Name String * */ $this->Conductor = $Conductor; } function getConductor() { return $this->Conductor; } function setOrchestra($Orchestra) { /** * Wed Sep 01 10:56:59 CDT 2004 10:56:59 - Ragsdale, Jason * * Use the Orchestra parameter to refine your search by orchestra name. * You may use all or part of an orchestra's name in your query. * * Orchestra Option: * An Orchestra Name String * */ $this->Orchestra = $Orchestra; } function getOrchestra() { return $this->Orchestra; } function setTextStream($TextStream) { /** * Wed Sep 01 10:55:36 CDT 2004 10:55:36 - Ragsdale, Jason * * Use the TextStream parameter to retrieve product search results based on a * block of text you specify in your request. The text block could be a search * term, a paragraph from a blog, an article excerpt, or any other text for which * you wish to retrieve product matches. * * When Amazon receives your request, Amazon parses out recognized keywords and * returns an equal number of products (ten total) for each recognized keyword. * For example, if you send a request with five recognized keywords, Amazon will * return two products matching each recognized keyword. * * Please note that the recognized keywords list Amazon uses for an ItemSearch using * TextStream does not exclude conjunctions and helper words, such as "and", "or", * "the", etc. Therefore, it would be a good idea to strip out these terms from the * text you specify in your request so that Amazon does not return products matching * them. * * The TextStream parameter is only available for an ItemSearch using Amazon.com's catalog. * * TextStream Options: * Any Block of Text * */ $this->TextStream = $TextStream; } function getTextStream() { return $this->TextStream; } function setItemPage($ItemPage) { /** * Wed Sep 01 10:54:39 CDT 2004 10:54:39 - Ragsdale, Jason * * The ItemPage parameter allows you to create a paginated list of search results. * This parameter returns the specified page. When you use ItemPage, ItemSearch * will return 10 search results at a time. The maximum ItemPage number that can * be returned is 500. If you do not include ItemPage in your request, the first * page (containing the first 10 items, or all of the items if there are less than * 10) will be returned by default. * * ItemPage Options: * 1 (Default) * Intergers 1 to 500 * */ $this->ItemPage = $ItemPage; } function getItemPage() { return $this->ItemPage; } function setSort($Sort) { /** * Wed Sep 01 10:53:03 CDT 2004 10:53:03 - Ragsdale, Jason * * Use the Sort parameter to specify how your item search results will be ordered. * Please note that valid sort values vary by search index and locale. The full * list of sort options are available in Sort Values. * * Sort Options: * See http://www.amazon.com/gp/aws/sdk/002-2261557-9296057 * */ $this->Sort = $Sort; } function getSort() { return $this->Sort; } function setCity($City) { /** * Wed Sep 01 10:52:10 CDT 2004 10:52:10 - Ragsdale, Jason * * Use the City parameter to refine your restaurant search by city name. You * may use all or part of a city's name in your query. At the present time, * AWS Product Data return restaurants for only select cities (see Valid Values). * This parameter may be used only when SearchIndex equals Restaurant and is only * applicable to US requests. * * City Options: * Boston * Chicago * New York * San Francisco * Seattle * Washington, D.C. * */ $this->City = $City; } function getCity() { return $this->City; } function setCuisine($Cuisine) { /** * Wed Sep 01 10:51:23 CDT 2004 10:51:23 - Ragsdale, Jason * * Use the Cuisine parameter to refine your restaurant search by cuisine name * (i.e., Chinese, Italian, American, etc.). You may use all or part of a cuisine's * name in your query. This parameter may be used only when SearchIndex equals * Restaurant and is only applicable to US requests. * * Cuisine Options: * A Cuisine Name String * */ $this->Cuisine = $Cuisine; } function getCuisine() { return $this->Cuisine; } function setNeighborhood($Neighborhood) { /** * Wed Sep 01 10:50:40 CDT 2004 10:50:40 - Ragsdale, Jason * * Use the Neighborhood parameter to refine your restaurant search by neighborhood * name (i.e., Capitol Hill, Arlington, North Beach, etc.). You may use all or part * of a neighborhood's name in your query. This parameter may be used only when * SearchIndex equals Restaurant and is only applicable to US requests. * * Neighborhood Options: * A Neighborhood Name String * */ $this->Neighborhood = $Neighborhood; } function getNeighborhood() { return $this->Neighborhood; } function setMinimumPrice($MinimumPrice) { /** * Wed Sep 01 10:50:03 CDT 2004 10:50:03 - Ragsdale, Jason * * Use the MinimumPrice parameter to set a lower price bound on products returned * by ItemSearch. The MinimumPrice value must be specified in pennies (or equivalent * in local currency). * * MimimumPrice Options: * An Interger * */ $this->MinimumPrice = $MinimumPrice; } function getMinimumPrice() { return $this->MinimumPrice; } function setMaximumPrice($MaximumPrice) { /** * Wed Sep 01 10:49:23 CDT 2004 10:49:23 - Ragsdale, Jason * * Use the MaximumPrice parameter to set an upper price bound on products returned * by ItemSearch. The MaximumPrice value must be specified in pennies (or equivalent * in local currency). * * MaximumPrice Options: * An Interger * */ $this->MaximumPrice = $MaximumPrice; } function getMaximumPrice() { return $this->MaximumPrice; } function setMerchantId($MerchantId) { /** * Wed Sep 01 10:48:04 CDT 2004 10:48:04 - Ragsdale, Jason * * Use the MerchantId parameter to filter the list of search results returned by * ItemSearch by the merchant offering the product. * * By setting MerchantId to "All" you may retrieve offers from Amazon partner * merchants (such as Target, Toys"R"Us, Office Depot, and others) as well as * independent marketplace sellers. You may also use the value "Featured," in * which case AWS returns the same merchant that is displayed when you click * the "Add to Shopping Cart" button on the product detail page. You may use a * batch request to retrieve similarities filtered by MerchantId for up to two * merchants. * * MerchantId must be used to return variation data when the response groups * VariationMinimum or VariationSummary are used, either together or separately. * * The MerchantId parameter is available for Amazon.com requests only. * * MerchantId Options: * All * Featured * A Merchant ID * */ $this->MerchantId = $MerchantId; } function getMerchantId() { return $this->MerchantId; } function setCondition($Condition) { /** * Wed Sep 01 10:47:13 CDT 2004 10:47:13 - Ragsdale, Jason * * Use the Condition parameter to filter the offers returned in the product list by * condition type. By default, a request with the Condition parameter will return a * maximum of 10 offers, with a maximum of 5 offer listings per offer. * * Condition Options: * New (Default) * All * Used * Refurbished * Collectible */ $this->Condition = $Condition; } function getCondition() { return $this->Condition; } function setDeliveryMethod($DeliveryMethod) { /** * Wed Sep 01 10:46:08 CDT 2004 10:46:08 - Ragsdale, Jason * * Use the DeliveryMethod parameter to filter offers returned in the product list * by delivery method. Valid values are Ship and ISPU (In-store pickup). If you use * ISPU, the offers returned will be ISPU offers from any postal code. To get ISPU * offers from a specific postal code, you must use the ItemLookup operation. * * Available for Amazon.com only. * * DeliveryMethod Options: * Ship (Default) * ISPU * */ $this->DeliveryMethod = $DeliveryMethod; } function getDeliveryMethod() { return $this->DeliveryMethod; } function setAssociateTag($AssociateTag) { /** * Wed Sep 01 10:44:55 CDT 2004 10:44:55 - Ragsdale, Jason * * Use the AssociateTag parameter to specify your Amazon.com, Amazon.co.uk, Amazon.de, * or Amazon.co.jp Associate ID. The AssociateTag allows product URLs returned by AWS * to be tagged as originating from your Associates Web site. Be sure to specify the * tag value correctly, as no error is generated for incorrect tag values. * * If you use those product URLs to link to Amazon, the Associate account connected to * the Associate tag you specify will be credited for traffic and items sold through * your links. Since you do not need to be an Associate to use AWS, AssociateTag is not * a required parameter. If you do not include AssociateTag in your requests, a default * Associate tag will be embedded in the product URLs in AWS responses. * * AssociateTag Options: * An Amazon-assigned Associates tag * */ $this->AssociateTag = $AssociateTag; } function getAssociateTag() { return $this->AssociateTag; } function setStyle($Style) { /** * Wed Sep 01 10:43:47 CDT 2004 10:43:47 - Ragsdale, Jason * * The Style parameter applies to REST requests only. Use the Style parameter to control * the format of the data returned by AWS in REST responses. * * Set this parameter to "XML" to generate a pure XML response. * * Set this parameter to the URL of an XSLT stylesheet to have AWS transform the XML response * to another format you specify. * * If you omit this parameter, AWS will return the pure XML response by default. * * Style Options: * XML (Default) * A URL to a stylesheet * */ $this->Style = $Style; } function getStyle() { return $this->Style; } function setContentType($ContentType) { /** * Wed Sep 01 10:42:24 CDT 2004 10:42:24 - Ragsdale, Jason * * The ContentType parameter is valid for REST requests only. The ContentType set in * your request is returned as the content type in the HTTP headers of the response * that AWS returns. Generally ContentType should only be changed when it is being used * in conjunction with an XSLT stylesheet specified with the Style parameter. * * ContentType Options: * text/xml * */ $this->ContentType = $ContentType; } function getContentType() { return $this->ContentType; } function setInputContentEncoding($InputContentEncoding) { /** * Wed Sep 01 10:41:40 CDT 2004 10:41:40 - Ragsdale, Jason * * Use the InputContentEncoding parameter to notify AWS about how your request is encoded. * InputContentEncoding works for REST requests only. * * InputContentEncoding Options: * Shift_JIS * UTF-8 (Default) * Latin-1 * etc.... * */ $this->InputContentEncoding = $InputContentEncoding; } function getInputContentEncoding() { return $this->InputContentEncoding; } function setValidate($Validate) { /** * Wed Sep 01 10:40:06 CDT 2004 10:40:06 - Ragsdale, Jason * * Use the Validate parameter to have AWS test your request without actually executing it. * If this parameter is not specified, the default value is False (i.e., requests are * executed normally). When present, Validate must equal True. If the request is valid, * the response will contain an element called IsValid with a value of True. If the request * is invalid, the response will contain 1) an element called IsValid with a value of False * and 2) the errors that would be returned if the request were actually executed. * * Notes: * Since the request is not actually executed, only a subset of the errors for the request * may be returned. This is because some errors (i.e., no_exact_matches) are only generated * during execution of a request. * * The IsValid element will always be present in any response, regardless of whether the * Validate parameter was in the request. * * Validate Options: * True */ $this->Validate = $Validate; } function getValidate() { return $this->Validate; } function setVersion($Version) { /** * Wed Sep 01 10:36:57 CDT 2004 10:36:57 - Ragsdale, Jason * * For REST requests, use the Version parameter to retrieve a particular version of the AWS * WSDL. The value of the Version parameter is the date that is part of the WSDL's namespace. * For example, if the namespace is http://xml.amazon.com/AWSProductData/2004-03-19, then you * should set the Version parameter to 2004-03-19. Each time changes are made to AWS (for * example, changed operation parameters, response groups, or behavior), a new WSDL is created * with a new date. * * For SOAP requests, this parameter is ignored because the version is retrieved from the WSDL namespace. * * If the Version parameter is omitted in a REST request, AWS uses a default namespace. The * default namespace may change as new versions of AWS are released. If you use XSLT to transform * AWS output, you should use the Version parameter to ensure that your stylesheets continue to * work correctly when the default namespace is changed. * * Version Options: * A WSDL Namespace date * */ $this->Version = $Version; } function getVersion() { return $this->Version; } function setXMLEscaping($XMLEscaping) { /** * Wed Sep 01 10:36:27 CDT 2004 10:36:27 - Ragsdale, Jason * * Use the XMLEscaping parameter to specify whether responses are XML-encoded in a single * pass or a double pass. By default, XMLEscaping is Single, and AWS responses are encoded * only once in XML. For example, if the response data includes an ampersand character (&), * the character is returned in its regular XML encoding (&). If XMLEscaping is Double, * the same ampersand character is XML-encoded twice (&amp;). * * The Double value for XMLEscaping is useful in some clients, such as PHP, that do not decode * text within XML elements. * * XMLEscaping Options: * Single (Default) * Double * */ $this->XMLEscaping = $XMLEscaping; } function getXMLEscaping() { return $this->XMLEscaping; } /** * Wed Sep 01 09:51:11 CDT 2004 09:51:11 - Ragsdale, Jason * * The code below this comment is to be called after a XML page has been loaded. * */ function setResult($Result) { $this->Result = $Result; } function getResult() { return $this->Result; } /** * Wed Sep 01 09:51:34 CDT 2004 09:51:34 - Ragsdale, Jason * * checkXmlError will look at the xml result and see if Amazon returned a error. If * so then we will throw an exception * */ function checkXmlError() { if ($this->xml->Items->Request->IsValid == 'False') { $error = 'Error Code:'.$this->xml->Items->Request->Errors->Error->Code.'<p>'; $error .= 'Message:'.$this->xml->Items->Request->Errors->Error->Message.'<p>'; throw new Exception($error); } } /** * Wed Sep 01 09:52:10 CDT 2004 09:52:10 - Ragsdale, Jason * * return the total number of results/pages * */ function getTotalResults() { return $this->xml->Items->TotalResults; } function getTotalPages() { return $this->xml->Items->TotalPages; } } ?> :::::::::::::END aws4.inc.php:::::::::::::::: :::::::::::::BEGIN example.php::::::::::::::: <? /** * * example.php PHP code to lookup a list of movies from Amazon.com Version: 0.1 * by Jason Ragsdale (jrags (at) jasrags (dot) net) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ /** * Thu Aug 26 15:45:47 CDT 2004 15:45:47 - jragsd00 * * required files * */ require_once('php/framework.inc.php'); /** * Thu Sep 02 10:59:41 CDT 2004 10:59:41 - Ragsdale, Jason * * This code expects you send the following POST var's * SearchIndex = any of the amazon.com search index options I.E. VHS, DVD * title = keyword you wish to search for. * The ResponseGroup is defaulted to Large in this example. * */ //Start our class $aws = new aws(); //Set our base URL based on our Country, Default = US $aws->setBaseURL(); //Set our SearchIndex $aws->setSearchIndex($_POST['SearchIndex']); //Set our keywords $aws->setKeywords(rtrim($_POST['title'])); //Set our ResponseGroup $aws->setResponseGroup('Large'); //Fetch the page $aws->fetch(); echo '<HTML><HEAD><TITLE>Search Results</TITLE></HEAD><BODY>'; echo 'Total Results: '.$aws->getTotalResults(); echo '<p>'; echo 'Total Pages: '.$aws->getTotalPages(); echo '<p>'; foreach ($aws->xml->Items->Item as $Item) { echo 'Name: '.$Item->ItemAttributes->Title.'<p>'; echo 'ASIN: '.$Item->ASIN.'<p>'; echo 'Theatrical Release Date: '.$Item->ItemAttributes->TheatricalReleaseDate.'<p>'; echo 'Media Release Date: '.$Item->ItemAttributes->ReleaseDate.'<p>'; echo 'Format: '.$Item->ItemAttributes->ProductGroup.'<p>'; } ?> ::::::::::::END example.php::::::::::::::::::::