1 | <?php |
||
8 | class CurlInitializer |
||
9 | { |
||
10 | protected $credential; |
||
11 | protected $options; |
||
12 | |||
13 | 53 | 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) |
|
120 | 12 | { |
|
121 | 12 | $ch = curl_init(); |
|
122 | 12 | list($url, $extra) = UrlNormalizer::twitterSplitUrlAndParameters($endpoint); |
|
123 | 12 | $params += $extra; |
|
124 | 12 | $params = RequestParamValidator::validateParams($params); |
|
125 | 12 | curl_setopt_array($ch, array_replace($this->options, [ |
|
126 | 12 | CURLOPT_URL => $url, |
|
127 | 12 | CURLOPT_HTTPHEADER => $this->credential->getOAuthHeaders($url, 'POST', $params), |
|
128 | 12 | CURLOPT_POST => true, |
|
129 | 12 | CURLOPT_POSTFIELDS => http_build_query($params, '', '&'), |
|
130 | 12 | CURLOPT_HEADERFUNCTION => [$handler, 'headerFunction'], |
|
131 | 12 | CURLOPT_WRITEFUNCTION => [$handler, 'writeFunction'], |
|
132 | ])); |
||
133 | 12 | return $ch; |
|
134 | } |
||
135 | |||
136 | 2 | public function oauthForRequestToken($oauth_callback = null) |
|
137 | 2 | { |
|
138 | 2 | if ($oauth_callback !== null) { |
|
139 | 2 | $oauth_callback = RequestParamValidator::validateStringable('oauth_callback', $oauth_callback); |
|
140 | } |
||
141 | 2 | $ch = curl_init(); |
|
142 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
143 | 2 | CURLOPT_URL => 'https://api.twitter.com/oauth/request_token', |
|
144 | 2 | CURLOPT_HTTPHEADER => $this->credential->getOAuthHeadersForRequestToken($oauth_callback), |
|
145 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
146 | 2 | CURLOPT_HEADER => true, |
|
147 | 2 | CURLOPT_POST => true, |
|
148 | ])); |
||
149 | 2 | return $ch; |
|
150 | } |
||
151 | |||
152 | 2 | public function oauthForAccessToken($oauth_verifier) |
|
153 | 2 | { |
|
154 | 2 | $oauth_verifier = RequestParamValidator::validateStringable('oauth_verifier', $oauth_verifier); |
|
155 | 2 | $ch = curl_init(); |
|
156 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
157 | 2 | CURLOPT_URL => 'https://api.twitter.com/oauth/access_token', |
|
158 | 2 | CURLOPT_HTTPHEADER => $this->credential->getOAuthHeadersForAccessToken($oauth_verifier), |
|
159 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
160 | 2 | CURLOPT_HEADER => true, |
|
161 | 2 | CURLOPT_POST => true, |
|
162 | ])); |
||
163 | 2 | return $ch; |
|
164 | } |
||
165 | |||
166 | 2 | public function xauthForAccessToken($username, $password) |
|
167 | 2 | { |
|
168 | 2 | $username = RequestParamValidator::validateStringable('username', $username); |
|
169 | 2 | $password = RequestParamValidator::validateStringable('password', $password); |
|
170 | 2 | $ch = curl_init(); |
|
171 | 2 | curl_setopt_array($ch, array_replace($this->options, [ |
|
172 | 2 | CURLOPT_URL => 'https://api.twitter.com/oauth/access_token', |
|
173 | 2 | CURLOPT_HTTPHEADER => $this->credential->getXAuthHeadersForAccessToken($username, $password), |
|
174 | 2 | CURLOPT_RETURNTRANSFER => true, |
|
175 | 2 | CURLOPT_HEADER => true, |
|
176 | 2 | CURLOPT_POST => true, |
|
177 | 2 | CURLOPT_POSTFIELDS => http_build_query([ |
|
178 | 2 | 'x_auth_username' => $username, |
|
179 | 2 | 'x_auth_password' => $password, |
|
180 | 2 | 'x_auth_mode' => 'client_auth', |
|
181 | 2 | ], '', '&'), |
|
182 | ])); |
||
183 | 2 | return $ch; |
|
184 | } |
||
185 | |||
186 | public function oauthForBearerToken() |
||
201 | |||
202 | public function get2($endpoint, $params = []) |
||
217 | |||
218 | public function invalidateBearerToken() |
||
233 | |||
234 | 4 | public function browsing() |
|
235 | 4 | { |
|
236 | 4 | $ch = curl_init(); |
|
237 | 4 | curl_setopt_array($ch, array_replace($this->options, [ |
|
238 | 4 | CURLOPT_COOKIEFILE => '', |
|
239 | 4 | CURLOPT_RETURNTRANSFER => true, |
|
240 | 4 | CURLOPT_HEADER => true, |
|
244 | } |
||
245 |