| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?php
- namespace TwitterPhp\Connection;
- /**
- * Class Base
- * @package TwitterPhp
- * @subpackage Connection
- */
- abstract class Base
- {
- /**
- * Url for Twitter api
- */
- const TWITTER_API_URL = 'https://api.twitter.com';
- /**
- * Twitter URL that authenticates bearer tokens
- */
- const TWITTER_API_AUTH_URL = 'https://api.twitter.com/oauth2/token/';
- /**
- * Version of Twitter api
- */
- const TWITTER_API_VERSION = '1.1';
- /**
- * Timeout value for curl connections
- */
- const DEFAULT_TIMEOUT = 10;
- /**
- * METHOD GET
- */
- const METHOD_GET = 'GET';
- /**
- * METHOD POST
- */
- const METHOD_POST = 'POST';
- /**
- * @param string $url
- * @param array $parameters
- * @param $method
- * @return array
- */
- abstract protected function _buildHeaders($url,array $parameters = null,$method);
- /**
- * Do GET request to Twitter api
- *
- * @link https://dev.twitter.com/docs/api/1.1
- *
- * @param $resource
- * @param array $parameters
- * @return mixed
- */
- public function get($resource, array $parameters = array())
- {
- $url = $this->_prepareUrl($resource);
- $headers = $this->_buildHeaders($url,$parameters,self::METHOD_GET);
- $url = $url . '?' . http_build_query($parameters);
- $curlParams = array (
- CURLOPT_URL => $url,
- CURLOPT_HTTPHEADER => $headers
- );
- return $this->_callApi($curlParams);
- }
- /**
- * Do POST request to Twitter api
- *
- * @link https://dev.twitter.com/docs/api/1.1
- *
- * @param $resource
- * @param array $parameters
- * @return mixed
- */
- public function post($resource, array $parameters = array())
- {
- $url = $this->_prepareUrl($resource);
- $headers = $this->_buildHeaders($url,$parameters,self::METHOD_POST);
- $curlParams = array (
- CURLOPT_URL => $url,
- CURLOPT_POST => 1,
- CURLOPT_POSTFIELDS => $parameters,
- CURLOPT_HTTPHEADER => $headers
- );
- return $this->_callApi($curlParams);
- }
- /**
- * Call Twitter api
- *
- * @param array $params
- * @return array
- */
- protected function _callApi(array $params)
- {
- $curl = curl_init();
- curl_setopt_array($curl,$params);
- curl_setopt($curl, CURLOPT_HEADER, 0);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, self::DEFAULT_TIMEOUT);
- $response = curl_exec($curl);
- return json_decode($response,true);
- }
- /**
- * @param string $resource
- * @return string
- */
- private function _prepareUrl($resource)
- {
- return self::TWITTER_API_URL . '/' . self::TWITTER_API_VERSION . '/' . ltrim($resource,'/') . '.json';
- }
- }
|