Changeset 774

Show
Ignore:
Timestamp:
08/03/07 15:03:20 (1 year ago)
Author:
mikey
Message:

enhanced net.stubbles.util.net.stubURL: added getUser(), getPassword(), getParam(), setPort()

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main/php/net/stubbles/util/net/http/stubHTTPURL.php

    r719 r774  
    1919{ 
    2020    /** 
    21      * parameters for url 
    22      * 
    23      * @var  array 
    24      */ 
    25     protected $params = array(); 
    26  
    27     /** 
    2821     * constructor 
    2922     * 
     
    4033        if (isset($this->url['path']) == false || strlen($this->url['path']) == 0) { 
    4134            $this->url['path'] = '/'; 
    42         } 
    43          
    44         if (parent::hasQuery() == true) { 
    45             parse_str($this->url['query'], $this->params); 
    46             $this->url['query'] = ''; 
    4735        } 
    4836    } 
     
    166154    public function hasQuery() 
    167155    { 
    168         return (count($this->params) > 0); 
     156        return (count($this->params) > 0 || parent::hasQuery()); 
    169157    } 
    170158 
  • trunk/src/main/php/net/stubbles/util/net/stubURL.php

    r719 r774  
    1717{ 
    1818    /** 
    19      * internal representation after parse_url($this->url
     19     * internal representation after parse_url(
    2020     * 
    2121     * @var  array 
    2222     */ 
    23     protected $url = array(); 
     23    protected $url    = array(); 
     24    /** 
     25     * parameters for url 
     26     * 
     27     * @var  array 
     28     */ 
     29    protected $params = array(); 
    2430 
    2531    /** 
     
    4046        if (isset($this->url['user']) == true && isset($this->url['pass']) == false && $this->get(true) != $url) { 
    4147            $this->url['pass'] = ''; 
     48        } 
     49         
     50        if ($this->hasQuery() == true) { 
     51            parse_str($this->url['query'], $this->params); 
    4252        } 
    4353    } 
     
    183193 
    184194    /** 
     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    /** 
    185225     * returns hostname of the url 
    186226     * 
    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) 
    190231    { 
    191232        if (isset($this->url['host']) == true) { 
     
    193234        } 
    194235         
    195         return null
     236        return $defaultHost
    196237    } 
    197238 
     
    199240     * returns port of the url 
    200241     * 
    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) 
    204246    { 
    205247        if (isset($this->url['port']) == true) { 
     
    207249        } 
    208250         
    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; 
    210262    } 
    211263 
     
    237289        return (isset($this->url['query']) == true && strlen($this->url['query']) > 0); 
    238290    } 
     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    } 
    239307} 
    240308?> 
  • trunk/src/test/php/net/stubbles/util/net/stubURLTestCase.php

    r719 r774  
    2626        $this->assertEqual($url->get(), 'http://example.com/'); 
    2727        $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); 
    3038        $this->assertEqual($url->getPath(), '/'); 
    3139        $this->assertFalse($url->hasQuery()); 
     
    4250        $this->assertEqual($url->get(TRUE), 'http://example.com:80/index.php?content=features#top'); 
    4351        $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'); 
    4456        $this->assertEqual($url->getHost(), 'example.com'); 
    4557        $this->assertEqual($url->getPort(), 80); 
     
    5870        $this->assertEqual($url->get(TRUE), 'ftp://user:password@example.com/'); 
    5971        $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); 
    6279        $this->assertEqual($url->getPath(), '/'); 
    6380        $this->assertFalse($url->hasQuery()); 
     
    7491        $this->assertEqual($url->get(), 'ftp://user@example.com/'); 
    7592        $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); 
    78100        $this->assertEqual($url->getPath(), '/'); 
    79101        $this->assertFalse($url->hasQuery()); 
     
    90112        $this->assertEqual($url->get(), 'ftp://user:@example.com/'); 
    91113        $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); 
    94121        $this->assertEqual($url->getPath(), '/'); 
    95122        $this->assertFalse($url->hasQuery()); 
     
    106133        $this->assertEqual($url->get(), 'ftp://@example.com/'); 
    107134        $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); 
    110142        $this->assertEqual($url->getPath(), '/'); 
    111143        $this->assertFalse($url->hasQuery()); 
     
    131163        $this->assertEqual($url->get(), 'http://localhost/'); 
    132164        $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'); 
    133169        $this->assertEqual($url->getHost(), 'localhost'); 
    134         $this->assertEqual($url->getPort(), null); 
     170        $this->assertNull($url->getPort()); 
     171        $this->assertEqual($url->getPort(313), 313); 
    135172        $this->assertEqual($url->getPath(), '/'); 
    136173        $this->assertFalse($url->hasQuery()); 
     
    147184        $this->assertEqual($url->get(), 'http://127.0.0.1/'); 
    148185        $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'); 
    149190        $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); 
    151193        $this->assertEqual($url->getPath(), '/'); 
    152194        $this->assertFalse($url->hasQuery()); 
     
    170212        $this->assertNull(stubURL::fromString('')); 
    171213    } 
     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    } 
    172226} 
    173227?>