コード例 #1
0
 /**
  * {@inheritdoc}
  */
 protected function sendInternalRequests(array $internalRequests, $success, $error)
 {
     if (!empty($internalRequests)) {
         $this->eventDispatcher->dispatch(Events::MULTI_PRE_SEND, $multiPreSendEvent = new MultiPreSendEvent($this, $internalRequests));
         $internalRequests = $multiPreSendEvent->getRequests();
     }
     $exceptions = array();
     try {
         $responses = $this->decorate('sendRequests', array($internalRequests));
     } catch (MultiHttpAdapterException $e) {
         $responses = $e->getResponses();
         $exceptions = $e->getExceptions();
     }
     if (!empty($responses)) {
         $this->eventDispatcher->dispatch(Events::MULTI_POST_SEND, $postSendEvent = new MultiPostSendEvent($this, $responses));
         $exceptions = array_merge($exceptions, $postSendEvent->getExceptions());
         $responses = $postSendEvent->getResponses();
     }
     if (!empty($exceptions)) {
         $this->eventDispatcher->dispatch(Events::MULTI_EXCEPTION, $exceptionEvent = new MultiExceptionEvent($this, $exceptions));
         $responses = array_merge($responses, $exceptionEvent->getResponses());
         $exceptions = $exceptionEvent->getExceptions();
     }
     foreach ($responses as $response) {
         call_user_func($success, $response);
     }
     foreach ($exceptions as $exception) {
         call_user_func($error, $exception);
     }
 }
コード例 #2
0
ファイル: RetrySubscriber.php プロジェクト: lamenath/fbp
 /**
  * On multi exception event.
  *
  * @param \Ivory\HttpAdapter\Event\MultiExceptionEvent $event The multi exception event.
  */
 public function onMultiException(MultiExceptionEvent $event)
 {
     $retryRequests = array();
     foreach ($event->getExceptions() as $exception) {
         if ($this->retry->retry($exception->getRequest(), false)) {
             $retryRequests[] = $exception->getRequest();
             $event->removeException($exception);
         }
     }
     if (empty($retryRequests)) {
         return;
     }
     try {
         $event->addResponses($event->getHttpAdapter()->sendRequests($retryRequests));
     } catch (MultiHttpAdapterException $e) {
         $event->addResponses($e->getResponses());
         $event->addExceptions($e->getExceptions());
     }
 }
コード例 #3
0
 /**
  * On multi exception event.
  *
  * @param \Ivory\HttpAdapter\Event\MultiExceptionEvent $event The multi exception event.
  */
 public function onMultiException(MultiExceptionEvent $event)
 {
     foreach ($event->getExceptions() as $exception) {
         $this->stopwatch->stop($this->getStopwatchName($event->getHttpAdapter(), $exception->getRequest()));
     }
 }
コード例 #4
0
ファイル: CookieSubscriber.php プロジェクト: lamenath/fbp
 /**
  * On multi exception event.
  *
  * @param \Ivory\HttpAdapter\Event\MultiExceptionEvent $event The multi exception event.
  */
 public function onMultiException(MultiExceptionEvent $event)
 {
     foreach ($event->getExceptions() as $exception) {
         if ($exception->hasResponse()) {
             $this->cookieJar->extract($exception->getRequest(), $exception->getResponse());
         }
     }
 }
コード例 #5
0
ファイル: AbstractHttpAdapter.php プロジェクト: lamenath/fbp
 /**
  * Sends internal requests.
  *
  * @param array $internalRequests The internal requests.
  *
  * @throws \Ivory\HttpAdapter\MultiHttpAdapterException If an error occurred.
  *
  * @return array The responses.
  */
 private function sendInternalRequests(array $internalRequests)
 {
     if (!empty($internalRequests) && $this->configuration->hasEventDispatcher()) {
         $this->configuration->getEventDispatcher()->dispatch(Events::MULTI_PRE_SEND, $multiPreSendEvent = new MultiPreSendEvent($this, $internalRequests));
         $internalRequests = $multiPreSendEvent->getRequests();
     }
     $responses = array();
     $exceptions = array();
     $successHandler = function (ResponseInterface $response) use(&$responses) {
         $responses[] = $response;
     };
     $errorHandler = function (HttpAdapterException $exception) use(&$exceptions) {
         $exceptions[] = $exception;
     };
     $this->doSendInternalRequests($internalRequests, $successHandler, $errorHandler);
     if (!empty($responses) && $this->configuration->hasEventDispatcher()) {
         $this->configuration->getEventDispatcher()->dispatch(Events::MULTI_POST_SEND, $postSendEvent = new MultiPostSendEvent($this, $responses));
         $exceptions = array_merge($exceptions, $postSendEvent->getExceptions());
         $responses = $postSendEvent->getResponses();
     }
     if (!empty($exceptions)) {
         if ($this->configuration->hasEventDispatcher()) {
             $this->configuration->getEventDispatcher()->dispatch(Events::MULTI_EXCEPTION, $exceptionEvent = new MultiExceptionEvent($this, $exceptions));
             $responses = array_merge($responses, $exceptionEvent->getResponses());
             $exceptions = $exceptionEvent->getExceptions();
         }
         if (!empty($exceptions)) {
             throw new MultiHttpAdapterException($exceptions, $responses);
         }
     }
     return $responses;
 }
 /**
  * On multi exception event.
  *
  * @param \Ivory\HttpAdapter\Event\MultiExceptionEvent $event The multi exception event.
  */
 public function onMultiException(MultiExceptionEvent $event)
 {
     foreach ($event->getExceptions() as $exception) {
         $this->collectException($event->getHttpAdapter(), $exception);
     }
 }
コード例 #7
0
ファイル: LoggerSubscriber.php プロジェクト: KGalley/whathood
 /**
  * On multi exception event.
  *
  * @param \Ivory\HttpAdapter\Event\MultiExceptionEvent $event The multi exception event.
  */
 public function onMultiException(MultiExceptionEvent $event)
 {
     foreach ($event->getExceptions() as $exception) {
         $exception->setRequest($this->error($event->getHttpAdapter(), $exception));
     }
 }