ConnectionAbstract.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace TwitterPhp\Connection;
  3. /**
  4. * Class Base
  5. * @package TwitterPhp
  6. * @subpackage Connection
  7. */
  8. abstract class Base
  9. {
  10. /**
  11. * Url for Twitter api
  12. */
  13. const TWITTER_API_URL = 'https://api.twitter.com';
  14. /**
  15. * Twitter URL that authenticates bearer tokens
  16. */
  17. const TWITTER_API_AUTH_URL = 'https://api.twitter.com/oauth2/token/';
  18. /**
  19. * Version of Twitter api
  20. */
  21. const TWITTER_API_VERSION = '1.1';
  22. /**
  23. * Timeout value for curl connections
  24. */
  25. const DEFAULT_TIMEOUT = 10;
  26. /**
  27. * METHOD GET
  28. */
  29. const METHOD_GET = 'GET';
  30. /**
  31. * METHOD POST
  32. */
  33. const METHOD_POST = 'POST';
  34. /**
  35. * @param string $url
  36. * @param array $parameters
  37. * @param $method
  38. * @return array
  39. */
  40. abstract protected function _buildHeaders($url,array $parameters = null,$method);
  41. /**
  42. * Do GET request to Twitter api
  43. *
  44. * @link https://dev.twitter.com/docs/api/1.1
  45. *
  46. * @param $resource
  47. * @param array $parameters
  48. * @return mixed
  49. */
  50. public function get($resource, array $parameters = array())
  51. {
  52. $url = $this->_prepareUrl($resource);
  53. $headers = $this->_buildHeaders($url,$parameters,self::METHOD_GET);
  54. $url = $url . '?' . http_build_query($parameters);
  55. $curlParams = array (
  56. CURLOPT_URL => $url,
  57. CURLOPT_HTTPHEADER => $headers
  58. );
  59. return $this->_callApi($curlParams);
  60. }
  61. /**
  62. * Do POST request to Twitter api
  63. *
  64. * @link https://dev.twitter.com/docs/api/1.1
  65. *
  66. * @param $resource
  67. * @param array $parameters
  68. * @return mixed
  69. */
  70. public function post($resource, array $parameters = array())
  71. {
  72. $url = $this->_prepareUrl($resource);
  73. $headers = $this->_buildHeaders($url,$parameters,self::METHOD_POST);
  74. $curlParams = array (
  75. CURLOPT_URL => $url,
  76. CURLOPT_POST => 1,
  77. CURLOPT_POSTFIELDS => $parameters,
  78. CURLOPT_HTTPHEADER => $headers
  79. );
  80. return $this->_callApi($curlParams);
  81. }
  82. /**
  83. * Call Twitter api
  84. *
  85. * @param array $params
  86. * @return array
  87. */
  88. protected function _callApi(array $params)
  89. {
  90. $curl = curl_init();
  91. curl_setopt_array($curl,$params);
  92. curl_setopt($curl, CURLOPT_HEADER, 0);
  93. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  94. curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, self::DEFAULT_TIMEOUT);
  95. $response = curl_exec($curl);
  96. return json_decode($response,true);
  97. }
  98. /**
  99. * @param string $resource
  100. * @return string
  101. */
  102. private function _prepareUrl($resource)
  103. {
  104. return self::TWITTER_API_URL . '/' . self::TWITTER_API_VERSION . '/' . ltrim($resource,'/') . '.json';
  105. }
  106. }