Changeset 774
- Timestamp:
- 08/03/07 15:03:20 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/main/php/net/stubbles/util/net/http/stubHTTPURL.php
r719 r774 19 19 { 20 20 /** 21 * parameters for url22 *23 * @var array24 */25 protected $params = array();26 27 /**28 21 * constructor 29 22 * … … 40 33 if (isset($this->url['path']) == false || strlen($this->url['path']) == 0) { 41 34 $this->url['path'] = '/'; 42 }43 44 if (parent::hasQuery() == true) {45 parse_str($this->url['query'], $this->params);46 $this->url['query'] = '';47 35 } 48 36 } … … 166 154 public function hasQuery() 167 155 { 168 return (count($this->params) > 0 );156 return (count($this->params) > 0 || parent::hasQuery()); 169 157 } 170 158 trunk/src/main/php/net/stubbles/util/net/stubURL.php
r719 r774 17 17 { 18 18 /** 19 * internal representation after parse_url( $this->url)19 * internal representation after parse_url() 20 20 * 21 21 * @var array 22 22 */ 23 protected $url = array(); 23 protected $url = array(); 24 /** 25 * parameters for url 26 * 27 * @var array 28 */ 29 protected $params = array(); 24 30 25 31 /** … … 40 46 if (isset($this->url['user']) == true && isset($this->url['pass']) == false && $this->get(true) != $url) { 41 47 $this->url['pass'] = ''; 48 } 49 50 if ($this->hasQuery() == true) { 51 parse_str($this->url['query'], $this->params); 42 52 } 43 53 } … … 183 193 184 194 /** 195 * returns the user 196 * 197 * @param string $defaultUser optional user to return if no user is set 198 * @return string 199 */ 200 public function getUser($defaultUser = null) 201 { 202 if (isset($this->url['user']) == true) { 203 return $this->url['user']; 204 } 205 206 return $defaultUser; 207 } 208 209 /** 210 * returns the password 211 * 212 * @param string $defaultPassword optional password to return if no password is set 213 * @return string 214 */ 215 public function getPassword($defaultPassword = null) 216 { 217 if (isset($this->url['pass']) == true) { 218 return $this->url['pass']; 219 } 220 221 return $defaultPassword; 222 } 223 224 /** 185 225 * returns hostname of the url 186 226 * 187 * @return string 188 */ 189 public function getHost() 227 * @param string $defaultHost optional default host to return if no host is defined 228 * @return string 229 */ 230 public function getHost($defaultHost = null) 190 231 { 191 232 if (isset($this->url['host']) == true) { … … 193 234 } 194 235 195 return null;236 return $defaultHost; 196 237 } 197 238 … … 199 240 * returns port of the url 200 241 * 201 * @return string 202 */ 203 public function getPort() 242 * @param int $defaultPort optional port to be used if no port is defined 243 * @return string 244 */ 245 public function getPort($defaultPort = null) 204 246 { 205 247 if (isset($this->url['port']) == true) { … … 207 249 } 208 250 209 return null; 251 return $defaultPort; 252 } 253 254 /** 255 * sets the port 256 * 257 * @param int $port 258 */ 259 public function setPort($port) 260 { 261 $this->url['port'] = $port; 210 262 } 211 263 … … 237 289 return (isset($this->url['query']) == true && strlen($this->url['query']) > 0); 238 290 } 291 292 /** 293 * returns the value of a param 294 * 295 * @param string $name name of the param 296 * @param mixed $defaultValue optional default value to return if param is not set 297 * @return mixed 298 */ 299 public function getParam($name, $defaultValue = null) 300 { 301 if (isset($this->params[$name]) == false) { 302 return $defaultValue; 303 } 304 305 return $this->params[$name]; 306 } 239 307 } 240 308 ?> trunk/src/test/php/net/stubbles/util/net/stubURLTestCase.php
r719 r774 26 26 $this->assertEqual($url->get(), 'http://example.com/'); 27 27 $this->assertEqual($url->getScheme(), 'http'); 28 $this->assertEqual($url->getHost(), 'example.com'); 29 $this->assertEqual($url->getPort(), null); 28 $this->assertNull($url->getUser()); 29 $this->assertEqual($url->getUser('foo'), 'foo'); 30 $this->assertNull($url->getPassword()); 31 $this->assertEqual($url->getPassword('foo'), 'foo'); 32 $this->assertEqual($url->getHost(), 'example.com'); 33 $this->assertNull($url->getPort()); 34 $this->assertEqual($url->getPort(313), 313); 35 $url->setPort(303); 36 $this->assertEqual($url->getPort(), 303); 37 $this->assertEqual($url->getPort(313), 303); 30 38 $this->assertEqual($url->getPath(), '/'); 31 39 $this->assertFalse($url->hasQuery()); … … 42 50 $this->assertEqual($url->get(TRUE), 'http://example.com:80/index.php?content=features#top'); 43 51 $this->assertEqual($url->getScheme(), 'http'); 52 $this->assertNull($url->getUser()); 53 $this->assertEqual($url->getUser('foo'), 'foo'); 54 $this->assertNull($url->getPassword()); 55 $this->assertEqual($url->getPassword('foo'), 'foo'); 44 56 $this->assertEqual($url->getHost(), 'example.com'); 45 57 $this->assertEqual($url->getPort(), 80); … … 58 70 $this->assertEqual($url->get(TRUE), 'ftp://user:password@example.com/'); 59 71 $this->assertEqual($url->getScheme(), 'ftp'); 60 $this->assertEqual($url->getHost(), 'example.com'); 61 $this->assertEqual($url->getPort(), null); 72 $this->assertEqual($url->getUser(), 'user'); 73 $this->assertEqual($url->getUser('foo'), 'user'); 74 $this->assertEqual($url->getPassword(), 'password'); 75 $this->assertEqual($url->getPassword('foo'), 'password'); 76 $this->assertEqual($url->getHost(), 'example.com'); 77 $this->assertNull($url->getPort()); 78 $this->assertEqual($url->getPort(313), 313); 62 79 $this->assertEqual($url->getPath(), '/'); 63 80 $this->assertFalse($url->hasQuery()); … … 74 91 $this->assertEqual($url->get(), 'ftp://user@example.com/'); 75 92 $this->assertEqual($url->getScheme(), 'ftp'); 76 $this->assertEqual($url->getHost(), 'example.com'); 77 $this->assertEqual($url->getPort(), null); 93 $this->assertEqual($url->getUser(), 'user'); 94 $this->assertEqual($url->getUser('foo'), 'user'); 95 $this->assertNull($url->getPassword()); 96 $this->assertEqual($url->getPassword('foo'), 'foo'); 97 $this->assertEqual($url->getHost(), 'example.com'); 98 $this->assertNull($url->getPort()); 99 $this->assertEqual($url->getPort(313), 313); 78 100 $this->assertEqual($url->getPath(), '/'); 79 101 $this->assertFalse($url->hasQuery()); … … 90 112 $this->assertEqual($url->get(), 'ftp://user:@example.com/'); 91 113 $this->assertEqual($url->getScheme(), 'ftp'); 92 $this->assertEqual($url->getHost(), 'example.com'); 93 $this->assertEqual($url->getPort(), null); 114 $this->assertEqual($url->getUser(), 'user'); 115 $this->assertEqual($url->getUser('foo'), 'user'); 116 $this->assertEqual($url->getPassword(), ''); 117 $this->assertEqual($url->getPassword('foo'), ''); 118 $this->assertEqual($url->getHost(), 'example.com'); 119 $this->assertNull($url->getPort()); 120 $this->assertEqual($url->getPort(313), 313); 94 121 $this->assertEqual($url->getPath(), '/'); 95 122 $this->assertFalse($url->hasQuery()); … … 106 133 $this->assertEqual($url->get(), 'ftp://@example.com/'); 107 134 $this->assertEqual($url->getScheme(), 'ftp'); 108 $this->assertEqual($url->getHost(), 'example.com'); 109 $this->assertEqual($url->getPort(), null); 135 $this->assertEqual($url->getUser(), ''); 136 $this->assertEqual($url->getUser('foo'), ''); 137 $this->assertNull($url->getPassword()); 138 $this->assertEqual($url->getPassword('foo'), 'foo'); 139 $this->assertEqual($url->getHost(), 'example.com'); 140 $this->assertNull($url->getPort()); 141 $this->assertEqual($url->getPort(313), 313); 110 142 $this->assertEqual($url->getPath(), '/'); 111 143 $this->assertFalse($url->hasQuery()); … … 131 163 $this->assertEqual($url->get(), 'http://localhost/'); 132 164 $this->assertEqual($url->getScheme(), 'http'); 165 $this->assertNull($url->getUser()); 166 $this->assertEqual($url->getUser('foo'), 'foo'); 167 $this->assertNull($url->getPassword()); 168 $this->assertEqual($url->getPassword('foo'), 'foo'); 133 169 $this->assertEqual($url->getHost(), 'localhost'); 134 $this->assertEqual($url->getPort(), null); 170 $this->assertNull($url->getPort()); 171 $this->assertEqual($url->getPort(313), 313); 135 172 $this->assertEqual($url->getPath(), '/'); 136 173 $this->assertFalse($url->hasQuery()); … … 147 184 $this->assertEqual($url->get(), 'http://127.0.0.1/'); 148 185 $this->assertEqual($url->getScheme(), 'http'); 186 $this->assertNull($url->getUser()); 187 $this->assertEqual($url->getUser('foo'), 'foo'); 188 $this->assertNull($url->getPassword()); 189 $this->assertEqual($url->getPassword('foo'), 'foo'); 149 190 $this->assertEqual($url->getHost(), '127.0.0.1'); 150 $this->assertEqual($url->getPort(), null); 191 $this->assertNull($url->getPort()); 192 $this->assertEqual($url->getPort(313), 313); 151 193 $this->assertEqual($url->getPath(), '/'); 152 194 $this->assertFalse($url->hasQuery()); … … 170 212 $this->assertNull(stubURL::fromString('')); 171 213 } 214 215 /** 216 * assure that params are handled correct 217 */ 218 public function testParam() 219 { 220 $url = stubURL::fromString('http://example.com/?foo=bar'); 221 $this->assertTrue($url->hasQuery()); 222 $this->assertEqual($url->getParam('foo'), 'bar'); 223 $this->assertNull($url->getParam('baz')); 224 $this->assertEqual($url->getParam('baz', 313), 313); 225 } 172 226 } 173 227 ?>
