Exception
5 years ago
WebAuthException
5 years ago
certs
5 years ago
AppInfo.php
5 years ago
AppInfoLoadException.php
5 years ago
ArrayEntryStore.php
5 years ago
AuthBase.php
5 years ago
AuthInfo.php
5 years ago
AuthInfoLoadException.php
5 years ago
Checker.php
5 years ago
Client.php
5 years ago
Curl.php
5 years ago
CurlStreamRelay.php
5 years ago
DeserializeException.php
5 years ago
DropboxMetadataHeaderCatcher.php
5 years ago
Exception.php
5 years ago
Host.php
5 years ago
HttpResponse.php
5 years ago
OAuth1AccessToken.php
5 years ago
OAuth1Upgrader.php
5 years ago
Path.php
5 years ago
RequestUtil.php
5 years ago
RootCertificates.php
5 years ago
SSLTester.php
5 years ago
Security.php
5 years ago
StreamReadException.php
5 years ago
Util.php
5 years ago
ValueStore.php
5 years ago
WebAuth.php
5 years ago
WebAuthBase.php
5 years ago
WebAuthNoRedirect.php
5 years ago
WriteMode.php
5 years ago
autoload.php
5 years ago
strict.php
5 years ago
CurlStreamRelay.php
46 lines
| 1 | <?php |
| 2 | namespace Dropbox; |
| 3 | |
| 4 | /** |
| 5 | * A CURLOPT_WRITEFUNCTION that will write HTTP response data to $outStream if |
| 6 | * it's an HTTP 200 response. For all other HTTP status codes, it'll save the |
| 7 | * output in a string, which you can retrieve it via {@link getErrorBody}. |
| 8 | * |
| 9 | * @internal |
| 10 | */ |
| 11 | class CurlStreamRelay |
| 12 | { |
| 13 | var $outStream; |
| 14 | var $errorData; |
| 15 | var $isError; |
| 16 | |
| 17 | function __construct($ch, $outStream) |
| 18 | { |
| 19 | $this->outStream = $outStream; |
| 20 | $this->errorData = array(); |
| 21 | $isError = null; |
| 22 | curl_setopt($ch, CURLOPT_WRITEFUNCTION, array($this, 'writeData')); |
| 23 | } |
| 24 | |
| 25 | function writeData($ch, $data) |
| 26 | { |
| 27 | if ($this->isError === null) { |
| 28 | $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); |
| 29 | $this->isError = ($statusCode !== 200); |
| 30 | } |
| 31 | |
| 32 | if ($this->isError) { |
| 33 | $this->errorData[] = $data; |
| 34 | } else { |
| 35 | fwrite($this->outStream, $data); |
| 36 | } |
| 37 | |
| 38 | return strlen($data); |
| 39 | } |
| 40 | |
| 41 | function getErrorBody() |
| 42 | { |
| 43 | return implode($this->errorData); |
| 44 | } |
| 45 | } |
| 46 |