public function convert(AbstractTransferEvent $event) { $response = $event->getResponse(); if ($response === null) { return; } $stream = $response->getBody(); if ($stream === null) { // no body - nothing to convert return; } $headers = $response->getHeaders(); // represent the headers as a string foreach ($headers as $name => $values) { $headers[$name] = implode("; ", $values); } $content = $stream->__toString(); $result = $this->converter->convert($headers, $content); if ($result !== null) { $body = new Stream(fopen('php://temp', 'r+')); // see Guzzle 4.1.7 > GuzzleHttp\Adapter\Curl\RequestMediator::writeResponseBody $response->setBody($body); $body->write($result->getTargetContent()); $response->setHeaders($result->getTargetHeaders()); } }
public function __invoke($retries, AbstractTransferEvent $event) { if (!($response = $event->getResponse())) { return RetrySubscriber::DEFER; } if (!$response->hasHeader('x-amz-crc32')) { return RetrySubscriber::DEFER; } $hash = hexdec(Utils::hash($response->getBody(), 'crc32b')); return (int) $response->getHeader('x-amz-crc32') !== $hash ? RetrySubscriber::RETRY : RetrySubscriber::DEFER; }
/** * Save referer to identity before passing the event on to the evaluation function * @param AbstractTransferEvent $event */ public function evaluate(AbstractTransferEvent $event) { $resp = $event->getResponse(); if ($resp != null) { $url = $resp->getEffectiveUrl(); if ($url !== "") { $identity = $this->getCurrentIdentity(); $identity->setReferer($url); } } return parent::evaluate($event); }
public function __invoke($retries, AbstractTransferEvent $event) { // Don't mess with networking errors. if (!($response = $event->getResponse())) { return RetrySubscriber::DEFER; } // Only retry 400 errors that contain the targeted exception message. if ($response->getStatusCode() != 400 || strpos($response->getBody(), self::ERR) === false) { return RetrySubscriber::DEFER; } return RetrySubscriber::RETRY; }
public function __invoke($retries, AbstractTransferEvent $event) { // Doesn't mess with networking errors. if (!($response = $event->getResponse())) { return RetrySubscriber::DEFER; } // Only works on 4xx respsonses if (substr($response->getStatusCode(), 0, 1) != '4') { return RetrySubscriber::DEFER; } $parser = $this->exceptionParser; $parts = $parser($response); return isset(self::$throttlingExceptions[$parts['code']]) ? RetrySubscriber::RETRY : RetrySubscriber::DEFER; }
protected static function getRetryDelay($retries, AbstractTransferEvent $event, $headerName) { if (is_null($event->getResponse()) || !$event->getResponse()->hasHeader($headerName)) { return RetrySubscriber::exponentialDelay($retries, $event); } $retryAfter = $event->getResponse()->getHeader($headerName); if (is_numeric($retryAfter)) { if ($retryAfter < time() - strtotime('1 day', 0)) { return $retryAfter; } else { return $retryAfter - time(); } } if (Utils::isValidDateTimeString($retryAfter, DATE_RFC1123)) { $date = \DateTime::createFromFormat(DATE_RFC1123, $retryAfter); return $date->getTimestamp() - time(); } return RetrySubscriber::exponentialDelay($retries, $event); }