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());
     }
 }
Exemplo n.º 2
0
 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);
 }
Exemplo n.º 4
0
 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;
 }
Exemplo n.º 5
0
 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;
 }
Exemplo n.º 6
0
 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);
 }