⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 amazon.php

📁 Bug tracker, and reporter.
💻 PHP
字号:
<?php/** * Zend Framework * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://framework.zend.com/license/new-bsd * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@zend.com so we can send you a copy immediately. * * @category   Zend * @package    Zend_Service * @subpackage Amazon * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License * @version    $Id: Amazon.php 8064 2008-02-16 10:58:39Z thomas $ *//** * @category   Zend * @package    Zend_Service * @subpackage Amazon * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com) * @license    http://framework.zend.com/license/new-bsd     New BSD License */class Zend_Service_Amazon{    /**     * Amazon Web Services Access Key ID     *     * @var string     */    public $appId;    /**     * List of Amazon Web Service base URLs, indexed by country code     *     * @var array     */    protected $_baseUriList = array('US' => 'http://webservices.amazon.com',                                    'UK' => 'http://webservices.amazon.co.uk',                                    'DE' => 'http://webservices.amazon.de',                                    'JP' => 'http://webservices.amazon.co.jp',                                    'FR' => 'http://webservices.amazon.fr',                                    'CA' => 'http://webservices.amazon.ca');    /**     * Reference to REST client object     *     * @var Zend_Rest_Client     */    protected $_rest;    /**     * Constructs a new Amazon Web Services Client     *     * @param  string $appId       Developer's Amazon appid     * @param  string $countryCode Country code for Amazon service; may be US, UK, DE, JP, FR, CA     * @throws Zend_Service_Exception     * @return Zend_Service_Amazon     */    public function __construct($appId, $countryCode = 'US')    {        $this->appId = (string) $appId;        $countryCode = (string) $countryCode;        if (!isset($this->_baseUriList[$countryCode])) {            /**             * @see Zend_Service_Exception             */            require_once 'Zend/Service/Exception.php';            throw new Zend_Service_Exception("Unknown country code: $countryCode");        }        /**         * @see Zend_Rest_Client         */        require_once 'Zend/Rest/Client.php';        $this->_rest = new Zend_Rest_Client($this->_baseUriList[$countryCode]);    }    /**     * Search for Items     *     * @param  array $options Options to use for the Search Query     * @throws Zend_Service_Exception     * @return Zend_Service_Amazon_ResultSet     * @see http://www.amazon.com/gp/aws/sdk/main.html/102-9041115-9057709?s=AWSEcommerceService&v=2005-10-05&p=ApiReference/ItemSearchOperation     */    public function itemSearch(array $options)    {        $defaultOptions = array('ResponseGroup' => 'Small');        $options = $this->_prepareOptions('ItemSearch', $options, $defaultOptions);        $this->_rest->getHttpClient()->resetParameters();        $response = $this->_rest->restGet('/onca/xml', $options);        if ($response->isError()) {            /**             * @see Zend_Service_Exception             */            require_once 'Zend/Service/Exception.php';            throw new Zend_Service_Exception('An error occurred sending request. Status code: '                                           . $response->getStatus());        }        $dom = new DOMDocument();        $dom->loadXML($response->getBody());        self::_checkErrors($dom);        /**         * @see Zend_Service_Amazon_ResultSet         */        require_once 'Zend/Service/Amazon/ResultSet.php';        return new Zend_Service_Amazon_ResultSet($dom);    }    /**     * Look up item(s) by ASIN     *     * @param  string $asin    Amazon ASIN ID     * @param  array  $options Query Options     * @see http://www.amazon.com/gp/aws/sdk/main.html/102-9041115-9057709?s=AWSEcommerceService&v=2005-10-05&p=ApiReference/ItemLookupOperation     * @throws Zend_Service_Exception     * @return Zend_Service_Amazon_Item|Zend_Service_Amazon_ResultSet     */    public function itemLookup($asin, array $options = array())    {        $defaultOptions = array('IdType' => 'ASIN', 'ResponseGroup' => 'Small');        $options['ItemId'] = (string) $asin;        $options = $this->_prepareOptions('ItemLookup', $options, $defaultOptions);        $this->_rest->getHttpClient()->resetParameters();        $response = $this->_rest->restGet('/onca/xml', $options);        if ($response->isError()) {            /**             * @see Zend_Service_Exception             */            require_once 'Zend/Service/Exception.php';            throw new Zend_Service_Exception('An error occurred sending request. Status code: '                                           . $response->getStatus());        }        $dom = new DOMDocument();        $dom->loadXML($response->getBody());        self::_checkErrors($dom);        $xpath = new DOMXPath($dom);        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');        $items = $xpath->query('//az:Items/az:Item');        if ($items->length == 1) {            /**             * @see Zend_Service_Amazon_Item             */            require_once 'Zend/Service/Amazon/Item.php';            return new Zend_Service_Amazon_Item($items->item(0));        }        /**         * @see Zend_Service_Amazon_ResultSet         */        require_once 'Zend/Service/Amazon/ResultSet.php';        return new Zend_Service_Amazon_ResultSet($dom);    }    /**     * Returns a reference to the REST client     *     * @return Zend_Rest_Client     */    public function getRestClient()    {        return $this->_rest;    }    /**     * Prepare options for request     *     * @param  string $query          Action to perform     * @param  array  $options        User supplied options     * @param  array  $defaultOptions Default options     * @return array     */    protected function _prepareOptions($query, array $options, array $defaultOptions)    {        $options['SubscriptionId'] = $this->appId;        $options['Service']        = 'AWSECommerceService';        $options['Operation']      = (string) $query;        // de-canonicalize out sort key        if (isset($options['ResponseGroup'])) {            $responseGroup = split(',', $options['ResponseGroup']);            if (!in_array('Request', $responseGroup)) {                $responseGroup[] = 'Request';                $options['ResponseGroup'] = implode(',', $responseGroup);            }        }        $options = array_merge($defaultOptions, $options);        return $options;    }    /**     * Check result for errors     *     * @param  DOMDocument $dom     * @throws Zend_Service_Exception     * @return void     */    protected static function _checkErrors(DOMDocument $dom)    {        $xpath = new DOMXPath($dom);        $xpath->registerNamespace('az', 'http://webservices.amazon.com/AWSECommerceService/2005-10-05');        if ($xpath->query('//az:Error')->length >= 1) {            $code = $xpath->query('//az:Error/az:Code/text()')->item(0)->data;            $message = $xpath->query('//az:Error/az:Message/text()')->item(0)->data;            /**             * @see Zend_Service_Exception             */            require_once 'Zend/Service/Exception.php';            throw new Zend_Service_Exception("$message ($code)");        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -