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; }
/** * @dataProvider provideResolvables */ public function testResolve($baseUri, $toResolve, $expectedResult) { $baseUri = new Uri($baseUri); $this->assertEquals($expectedResult, $baseUri->resolve($toResolve)); }