root/lang/php/ZendFramework_ext/library/Gene/Webservices/Pathtraq.php @ 16685

Revision 16685, 7.4 kB (checked in by heavenshell, 6 years ago)

Rename Webservice to Webservices

Line 
1<?php
2/**
3 * Pathtraq
4 *
5 * PHP version 5.2
6 *
7 * LICENSE
8 *
9 * This source file is subject to the new BSD license.
10 * It is also available through the world-wide-web at this URL:
11 * http://framework.zend.com/license/new-bsd
12 *
13 * @category Gene
14 * @package Gene_Webservices
15 * @version $id$
16 * @copyright 2008 Heavens hell
17 * @author Heavens hell <heavenshell.jp@gmail.com>
18 * @license New BSD License
19 */
20
21/**
22 * @see Zend_Http_Cliene
23 */
24require_once 'Zend/Http/Client.php';
25
26/**
27 * @see Gene_Webservices_Pathtraq_Exception
28 */
29require_once 'Pathtraq/Exception.php';
30
31/**
32 * Pathtraq
33 *
34 * @category Gene
35 * @package Gene_Webservices
36 * @version $id$
37 * @copyright 2008 Heavens hell
38 * @author Heavens hell <heavenshell.jp@gmail.com>
39 * @license New BSD License
40 */
41class Gene_Webservices_Pathtraq
42{
43    /**
44     * Library version
45     */
46    const VERSION = '0.01';
47
48    /**
49     * Uri of Pathtrae
50     */
51    const BASE_URL = 'http://api.pathtraq.com/';
52
53    /**
54     * Http client
55     *
56     * @var mixed
57     * @access private
58     */
59    private $_httpClient = null;
60
61    /**
62     * Constructor
63     *
64     * @param mixed $client Zend_Http_Client
65     * @access public
66     * @return void
67     */
68    public function __construct($client = null)
69    {
70        $this->setHttpClient($client);
71    }
72
73    /**
74     * Get the Zend_Http_Client object used for communication
75     *
76     * @access public
77     * @return Zend_Http_Client
78     */
79    public function getHttpClient()
80    {
81        return $this->_httpClient;
82    }
83
84    /**
85     * Set the Zend_Http_Client object used for communication
86     *
87     * @param mixed $client
88     * @access public
89     * @return Gene_Webservices_Pathtraq
90     */
91    public function setHttpClient($client = null)
92    {
93        if ($client === null) {
94            $client = new Zend_Http_Client();
95        }
96        if (!$client instanceof Zend_Http_Client) {
97            throw new Gene_Webservices_Pathtraq_Exception('argument is not an instance of Zend_Http_Client.');
98        }
99        // Get user agent
100        $useragent = getEnv('HTTP_USER_AGENT');
101        if ($useragent === '') {
102            $useragent = 'Zend_Framework/' . Zend_Version::VERSION;
103        }
104        $client->setConfig(
105            array(
106                'keepalive'       => true,
107                'strictredirects' => true,
108                'useragent'       => $useragent
109            )
110        );
111        $this->_httpClient = $client;
112        return $this;
113    }
114
115    /**
116     * News ranking api
117     *
118     * @param array $values Query parameters
119     * @access public
120     * @return Zend_Http_Response
121     */
122    public function newsRanking(array $values)
123    {
124        $uri = self::BASE_URL . 'news_ja';
125
126        $params = array();
127        if (isset($values['api'])) {
128            $params['api'] = $values['api'];
129        }
130
131        if (isset($values['genre'])) {
132            $params['genre'] = $values['genre'];
133        }
134
135        if (isset($values['m'])) {
136            $params['m'] = $values['m'];
137        }
138
139        $query    = $this->_buildQuery($params);
140        $response = $this->_get($uri . $query);
141
142        return $response;
143    }
144
145    /**
146     * Category ranking api
147     *
148     * @param array $values Query parameters
149     * @access public
150     * @return Zend_Http_Response
151     */
152    public function categoryRanking(array $values)
153    {
154        $uri = self::BASE_URL . 'popular';
155
156        $params = array();
157        if (isset($values['api'])) {
158            $params['api'] = $values['api'];
159        }
160
161        if (isset($values['category'])) {
162            $params['category'] = $values['category'];
163        }
164
165        if (isset($values['m'])) {
166            $params['m'] = $values['m'];
167        }
168        $query = $this->_buildQuery($params);
169        $response = $this->_get($uri . $query);
170
171        return $response;
172    }
173
174    /**
175     * Keyword search api
176     *
177     * @param array $values Query parameters
178     * @access public
179     * @return Zend_Http_Response
180     */
181    public function keywordSearch(array $values)
182    {
183        $uri = self::BASE_URL . 'pages';
184
185        $params = array();
186        if (isset($values['api'])) {
187            $params['api'] = $values['api'];
188        }
189        if (isset($values['m'])) {
190            $params['m'] = $values['m'];
191        }
192        if (isset($values['url'])) {
193            $params['url'] = $values['url'];
194        }
195        $query = $this->_buildQuery($params);
196        $response = $this->_get($uri . $query);
197
198        return $response;
199    }
200
201
202    /**
203     * Normalize url2 api
204     *
205     * @param array $values Query parameters
206     * @access public
207     * @return Zend_Http_Response
208     */
209    public function normalizeUrl2(array $values)
210    {
211        $uri = self::BASE_URL . 'normalize_url2';
212
213        $params = array();
214        if (isset($values['api'])) {
215            $params['api'] = $values['api'];
216        }
217        if (isset($values['url'])) {
218            $params['url'] = $values['url'];
219        }
220
221        $query    = $this->_buildQuery($params);
222        $response = $this->_get($uri . $query);
223
224        return $response;
225    }
226
227    /**
228     * Page counter api
229     *
230     * @param array $values Query parameters
231     * @access public
232     * @return Zend_Http_Response
233     */
234    public function pageCounter(array $values)
235    {
236        $uri = self::BASE_URL . 'page_counter';
237
238        $params = array();
239        if (isset($values['api'])) {
240            $params['api'] = $values['api'];
241        }
242        if (isset($values['m'])) {
243            $params['m'] = $values['m'];
244        }
245        if (isset($values['url'])) {
246            $params['url'] = $values['url'];
247        }
248
249        $query    = $this->_buildQuery($params);
250        $response = $this->_get($uri . $query);
251
252        return $response;
253    }
254
255    /**
256     * Page chart api
257     *
258     * @param array $values Query parameters
259     * @access public
260     * @return Zend_Http_Response
261     */
262    public function pageChart(array $values)
263    {
264        $uri = self::BASE_URL . 'page_chart';
265
266        $params = array();
267        if (isset($values['api'])) {
268            $params['api'] = $values['api'];
269        }
270        if (isset($values['url'])) {
271            $params['url'] = $values['url'];
272        }
273        if (isset($values['scale'])) {
274            $params['scale'] = $values['scale'];
275        }
276        $query    = $this->_buildQuery($params);
277        $response = $this->_get($uri . $query);
278
279        return $response;
280    }
281
282    /**
283     * Get data
284     *
285     * @param string $uri Pathtraq api uri
286     * @access private
287     * @return Zend_Http_Response
288     */
289    private function _get($uri)
290    {
291        // Validate uri
292        require_once 'Zend/Uri.php';
293        if (Zend_Uri::check($uri) === false) {
294            throw new Gene_Webservices_Pathtraq_Exception('Invaild uri.');
295        }
296        $client   = $this->getHttpClient();
297        $response = $client->setUri($uri)
298                        ->setMethod(Zend_Http_Client::GET)
299                        ->request('GET');
300
301        return $response;
302    }
303
304    /**
305     * Build query string
306     *
307     * @param array $values Parameters
308     * @access private
309     * @return string Query parameters
310     */
311    private function _buildQuery(array $values)
312    {
313        $query = '';
314        foreach ($values as $key => $val) {
315            $query .= $key . '=' . $val . '&';
316        }
317        $query = rtrim($query, '&');
318        if ($query !== '') {
319            $query = '?' . $query;
320        }
321
322        return $query;
323    }
324}
Note: See TracBrowser for help on using the browser.