* @license http://www.freebsd.org/copyright/freebsd-license.html 2 Clause BSD License * @version $Id:$ * @filesource */ require_once 'PEAR.php'; require_once 'HTTP/Request.php'; if (!defined('SERVICES_RAKUAPI_BASEURL')) { define('SERVICES_RAKUAPI_BASEURL', 'http://rakuapi.ddo.jp/api?'); } /** * Class for accessing and retrieving information * from RakuAPI * * @package Services_RakuAPI * @author Tatsuya Tsuruoka * @access public * @version Release: @package_version@ * @uses PEAR * @uses HTTP_Request */ class Services_RakuAPI { var $_baseurl = SERVICES_RAKUAPI_BASEURL; var $_lasturl = null; var $affiliate_code = ''; function Services_RakuAPI() { } function getApiVersion() { return '0.1.0'; } function getLastUrl() { return $this->_lasturl; } /** * Retrieves information * * Example: * * affiliate_code = '...'; * $result = $raku->search('DS Lite'); * ?> * * * @access public * @param string $keywords * @param array $options * @return array The array of information returned by the query */ function search($keywords, $options = array()) { $params = array(); $params['q'] = $keywords; $params['output'] = 'php'; return $this->_sendRequest(array_merge($params, $options)); } function _sendRequest($params) { $this->_errors = array(); if (!empty($this->affiliate_code)) { $params['affiliate_code'] = $this->affiliate_code; } $query = array(); foreach ($params as $k => $v) { $query[] = $k . '=' . urlencode($v); } $url = $this->_baseurl . implode('&', $query); $this->_lasturl = $url; $http = &new HTTP_Request($url); $http->addHeader('User-Agent', 'PEAR::Services_RakuAPI/' . $this->getApiVersion()); $http->sendRequest(); if ($http->getResponseCode() != 200){ return PEAR::raiseError('RakuAPI returned invalid HTTP response code ' . $http->getResponseCode()); } $result = $http->getResponseBody(); if ($params['output'] === 'php') { return unserialize($result); } return $result; } } ?>