public function testHasMethods() { $url = new Http\Url('http://example.org/?query#fragment'); $this->assertTrue($url->hasHost(), 'URL should have host'); $this->assertTrue($url->hasScheme(), 'URL should have scheme'); $this->assertTrue($url->hasQueryString(), 'URL should have query string'); $this->assertTrue($url->hasFragmentString(), 'URL should have fragment string'); $this->assertTrue($url->hasPort(), 'URL should have port'); $this->assertTrue($url->hasDefaultPort(), 'URL should have default port'); $url = new Http\Url('/'); $this->assertFalse($url->hasHost(), 'URL should not have host'); $this->assertFalse($url->hasScheme(), 'URL should not have scheme'); $this->assertFalse($url->hasQueryString(), 'URL should not have query string'); $this->assertFalse($url->hasFragmentString(), 'URL should not have fragment string'); $this->assertFalse($url->hasPort(), 'URL should not have port'); $this->assertFalse($url->hasDefaultPort(), 'URL should not have default port'); }
/** * Redirect to a new url */ private function redirect($location) { $locationUrl = new Url($location); // if the location header was relative (bleh) add the host if (!$locationUrl->hasHost()) { $locationUrl = $this->url->getUrlForPath($location); } if ($this->redirects > self::MAXredirects) { throw new Error\BadRequest("Exceeded maximum redirects"); } $this->redirects++; return $this->dispatchRequest(new Request('GET', $locationUrl, $this->headers)); }