1 | <?php |
||
8 | class CurlInitializer |
||
9 | { |
||
10 | protected $credential; |
||
11 | protected $options; |
||
12 | |||
13 | 58 | public function __construct(Credential $credential, array $options) |
|
18 | |||
19 | 11 | public function get($endpoint, array $params) |
|
34 | |||
35 | 13 | public function post($endpoint, array $params) |
|
51 | |||
52 | 9 | public function postMultipart($endpoint, array $params) |
|
68 | |||
69 | 2 | public function getOut($endpoint, array $params) |
|
70 | 2 | { |
|
71 | 2 | $ch = curl_init(); |
|
72 | 2 | list($url, $extra) = UrlNormalizer::outSplitUrlAndParameters($endpoint); |
|
73 | 2 | $params += $extra; |
|
74 | 2 | $params = RequestParamValidator::validateParams($params); |
|
75 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
76 | 2 | CURLOPT_URL => !$params ? $url : $url . '?' . http_build_query($params, '', '&'), |
|
77 | 2 | CURLOPT_HTTPHEADER => $this->credential->getOAuthHeadersForOAuthEcho(), |
|
78 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
79 | 2 | CURLOPT_HEADER => true, |
|
80 | 2 | CURLOPT_HTTPGET => true, |
|
81 | ])); |
||
82 | 2 | return $ch; |
|
83 | } |
||
84 | |||
85 | 2 | public function postOut($endpoint, array $params) |
|
86 | 2 | { |
|
87 | 2 | $ch = curl_init(); |
|
88 | 2 | list($url, $extra) = UrlNormalizer::outSplitUrlAndParameters($endpoint); |
|
89 | 2 | $params += $extra; |
|
90 | 2 | $params = RequestParamValidator::validateParams($params); |
|
91 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
92 | 2 | CURLOPT_URL => $url, |
|
93 | 2 | CURLOPT_HTTPHEADER => $this->credential->getOAuthHeadersForOAuthEcho(), |
|
94 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
95 | 2 | CURLOPT_HEADER => true, |
|
96 | 2 | CURLOPT_POST => true, |
|
97 | 2 | CURLOPT_POSTFIELDS => http_build_query($params, '', '&'), |
|
98 | ])); |
||
99 | 2 | return $ch; |
|
100 | } |
||
101 | |||
102 | 2 | public function postMultipartOut($endpoint, array $params) |
|
103 | 2 | { |
|
104 | 2 | $ch = curl_init(); |
|
105 | 2 | list($url, $extra) = UrlNormalizer::outSplitUrlAndParameters($endpoint); |
|
106 | 2 | $params += $extra; |
|
107 | 2 | $params = RequestParamValidator::validateMultipartParams($params); |
|
108 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
109 | 2 | CURLOPT_URL => $url, |
|
110 | 2 | CURLOPT_HTTPHEADER => $this->credential->getOAuthHeadersForOAuthEcho(), |
|
111 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
112 | 2 | CURLOPT_HEADER => true, |
|
113 | 2 | CURLOPT_POST => true, |
|
114 | 2 | CURLOPT_POSTFIELDS => $params, |
|
115 | ])); |
||
116 | 2 | return $ch; |
|
117 | } |
||
118 | |||
119 | 12 | public function streaming($endpoint, array $params, StreamHandler $handler) |
|
135 | |||
136 | 2 | public function oauthForRequestToken($oauth_callback = null) |
|
137 | 2 | { |
|
138 | 2 | if ($oauth_callback !== null) { |
|
151 | |||
152 | 2 | public function oauthForAccessToken($oauth_verifier) |
|
165 | |||
166 | 2 | public function xauthForAccessToken($username, $password) |
|
185 | |||
186 | 2 | public function oauthForBearerToken() |
|
187 | 2 | { |
|
188 | 2 | $ch = curl_init(); |
|
189 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
190 | 2 | CURLOPT_URL => 'https://api.twitter.com/oauth2/token', |
|
191 | 2 | CURLOPT_HTTPHEADER => $this->credential->getBasicHeaders(), |
|
192 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
193 | 2 | CURLOPT_HEADER => true, |
|
194 | 2 | CURLOPT_POST => true, |
|
195 | 2 | CURLOPT_POSTFIELDS => http_build_query([ |
|
196 | 2 | 'grant_type' => 'client_credentials', |
|
197 | 2 | ], '', '&'), |
|
198 | ])); |
||
199 | 2 | return $ch; |
|
200 | } |
||
201 | |||
202 | 2 | public function get2($endpoint, $params = []) |
|
203 | 2 | { |
|
204 | 2 | $ch = curl_init(); |
|
205 | 2 | list($url, $extra) = UrlNormalizer::twitterSplitUrlAndParameters($endpoint); |
|
206 | 2 | $params += $extra; |
|
207 | 2 | $params = RequestParamValidator::validateParams($params); |
|
208 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
209 | 2 | CURLOPT_URL => !$params ? $url : $url . '?' . http_build_query($params, '', '&'), |
|
210 | 2 | CURLOPT_HTTPHEADER => $this->credential->getBearerHeaders(), |
|
211 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
212 | 2 | CURLOPT_HEADER => true, |
|
213 | 2 | CURLOPT_HTTPGET => true, |
|
214 | ])); |
||
215 | 2 | return $ch; |
|
216 | } |
||
217 | |||
218 | 2 | public function invalidateBearerToken() |
|
219 | 2 | { |
|
220 | 2 | $ch = curl_init(); |
|
221 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
222 | 2 | CURLOPT_URL => 'https://api.twitter.com/oauth2/invalidate_token', |
|
223 | 2 | CURLOPT_HTTPHEADER => $this->credential->getBasicHeaders(), |
|
224 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
225 | 2 | CURLOPT_HEADER => true, |
|
226 | 2 | CURLOPT_POST => true, |
|
227 | 2 | CURLOPT_POSTFIELDS => http_build_query([ |
|
228 | 2 | 'access_token' => rawurldecode($this->credential->token), |
|
229 | 2 | ], '', '&', PHP_QUERY_RFC3986), |
|
230 | ])); |
||
231 | 2 | return $ch; |
|
232 | } |
||
233 | |||
234 | 4 | public function browsing() |
|
244 | } |
||
245 |