예제 #1
0
파일: Client.php 프로젝트: PeeHaa/Artax
 private function getRedirectUri(RequestCycle $cycle)
 {
     $request = $cycle->request;
     $response = $cycle->response;
     if (!($cycle->options[self::OP_FOLLOW_LOCATION] && $response->hasHeader('Location'))) {
         return null;
     }
     $status = $response->getStatus();
     $method = $request->getMethod();
     if ($status < 200 || $status > 399 || !($method === 'GET' || $method === 'HEAD')) {
         return null;
     }
     $requestUri = new Uri($request->getUri());
     $redirectLocation = current($response->getHeader('Location'));
     if (!$requestUri->canResolve($redirectLocation)) {
         return null;
     }
     $newUri = $requestUri->resolve($redirectLocation);
     $cycle->redirectHistory[] = $request->getUri();
     return $newUri;
 }
예제 #2
0
파일: UriTest.php 프로젝트: PeeHaa/Artax
 /**
  * @dataProvider provideResolvables
  */
 public function testResolve($baseUri, $toResolve, $expectedResult)
 {
     $baseUri = new Uri($baseUri);
     $this->assertEquals($expectedResult, $baseUri->resolve($toResolve));
 }