Exemple #1
0
 public function testExecute()
 {
     $dispatcher = new Dispatcher();
     $request1 = m::mock('jyggen\\Curl\\Request', array('http://example.com/'))->shouldDeferMissing();
     $request2 = m::mock('jyggen\\Curl\\Request', array('http://example.org/'))->shouldDeferMissing();
     $request1->shouldReceive('execute')->andReturn(true);
     $request2->shouldReceive('execute')->andReturn(true);
     $request1->shouldReceive('getRawResponse')->andReturnUsing(function () use($request1) {
         return curl_multi_getcontent($request1->getHandle());
     });
     $request2->shouldReceive('getRawResponse')->andReturnUsing(function () use($request2) {
         return curl_multi_getcontent($request2->getHandle());
     });
     $dispatcher->add($request1);
     $dispatcher->add($request2);
     $dispatcher->execute();
     $response1 = $request1->getRawResponse();
     $response2 = $request2->getRawResponse();
     $this->assertStringStartsWith('HTTP/1.1 200 OK', $response1);
     $this->assertStringStartsWith('HTTP/1.1 200 OK', $response2);
 }
Exemple #2
0
 public function getDocumentByURI($args)
 {
     $uris = is_array($args) ? $args : [$args];
     $dp = new Dispatcher();
     $requests = $documents = [];
     foreach ($uris as $uri) {
         $requests[] = new Request('http://' . self::DOMAIN . '/' . $uri);
         $dp->add(end($requests));
     }
     $dp->execute();
     foreach ($requests as $request) {
         $raw = substr($request->getRawResponse(), $request->getInfo(CURLINFO_HEADER_SIZE));
         if ($request->getResponse()->headers->get('location')) {
             throw new RedirectException();
         } else {
             if (!$raw) {
                 throw new URIException();
             }
         }
         $documents[] = new Document($raw);
     }
     return is_array($args) ? $documents : $documents[0];
 }