/** * Sets the URL for this request * * If the URL has userinfo part (username & password) these will be removed * and converted to auth data. If the URL does not have a path component, * that will be set to '/'. * * @param string|Net_URL2 Request URL * @return HTTP_Request2 * @throws HTTP_Request2_Exception */ public function setUrl($url) { if (is_string($url)) { $url = new Net_URL2($url); } if (!$url instanceof Net_URL2) { throw new HTTP_Request2_Exception('Parameter is not a valid HTTP URL'); } // URL contains username / password? if ($url->getUserinfo()) { $username = $url->getUser(); $password = $url->getPassword(); $this->setAuth(rawurldecode($username), $password ? rawurldecode($password) : ''); $url->setUserinfo(''); } if ('' == $url->getPath()) { $url->setPath('/'); } $this->url = $url; return $this; }
/** * Sets the URL for this request * * If the URL has userinfo part (username & password) these will be removed * and converted to auth data. If the URL does not have a path component, * that will be set to '/'. * * @param string|Net_URL2 $url Request URL * * @return HTTP_Request2 * @throws HTTP_Request2_LogicException */ public function setUrl($url) { if (is_string($url)) { $url = new Net_URL2($url, array(Net_URL2::OPTION_USE_BRACKETS => $this->config['use_brackets'])); } if (!$url instanceof Net_URL2) { throw new HTTP_Request2_LogicException('Parameter is not a valid HTTP URL', HTTP_Request2_Exception::INVALID_ARGUMENT); } // URL contains username / password? if ($url->getUserinfo()) { $username = $url->getUser(); $password = $url->getPassword(); $this->setAuth(rawurldecode($username), $password ? rawurldecode($password) : ''); $url->setUserinfo(''); } if ('' == $url->getPath()) { $url->setPath('/'); } $this->url = $url; return $this; }
/** * This is a feature test to see that the userinfo's data is getting * encoded as outlined in #19684. * * @covers Net_URL2::setAuthority * @covers Net_URL2::setUserinfo * @return void */ public function testEncodeDataUserinfoAuthority() { $url = new Net_URL2('http://john doe:secret@example.com/'); $this->assertSame('http://john%20doe:secret@example.com/', (string) $url); $url->setUserinfo('john doe'); $this->assertSame('http://john%20doe@example.com/', (string) $url); $url->setUserinfo('john doe', 'pa wd'); $this->assertSame('http://john%20doe:pa%20wd@example.com/', (string) $url); }