public function testAssociatesExceptionsWithRequests() { $r1 = new Request('GET', 'http://www.foo.com'); $re1 = new \Exception('foo'); $re2 = new \Exception('bar'); $e = new MultiTransferException(); $e->add($re2); $e->addFailedRequestWithException($r1, $re1); $this->assertSame($re1, $e->getExceptionForFailedRequest($r1)); $this->assertNull($e->getExceptionForFailedRequest(new Request('POST', '/foo'))); }
public static function fromMultiTransferException(MultiTransferException $e) { $ce = new self($e->getMessage(), $e->getCode(), $e->getPrevious()); $ce->setSuccessfulRequests($e->getSuccessfulRequests()); $alreadyAddedExceptions = array(); foreach ($e->getFailedRequests() as $request) { if ($re = $e->getExceptionForFailedRequest($request)) { $alreadyAddedExceptions[] = $re; $ce->addFailedRequestWithException($request, $re); } else { $ce->addFailedRequest($request); } } if (count($alreadyAddedExceptions) < count($e)) { foreach ($e as $ex) { if (!in_array($ex, $alreadyAddedExceptions)) { $ce->add($ex); } } } return $ce; }