Skip to content

Commit

Permalink
Merge pull request #524 from lulhum/lulhum-uri-allow-underscore
Browse files Browse the repository at this point in the history
Allow underscore character in Uri host
  • Loading branch information
WyriHaximus authored Nov 19, 2024
2 parents f2b8bf3 + 888e3c0 commit 71c0e5c
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/Message/Uri.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public function __construct($uri)
}
// @codeCoverageIgnoreEnd

if ($parts === false || (isset($parts['scheme']) && !\preg_match('#^[a-z]+$#i', $parts['scheme'])) || (isset($parts['host']) && \preg_match('#[\s_%+]#', $parts['host']))) {
if ($parts === false || (isset($parts['scheme']) && !\preg_match('#^[a-z]+$#i', $parts['scheme'])) || (isset($parts['host']) && \preg_match('#[\s%+]#', $parts['host']))) {
throw new \InvalidArgumentException('Invalid URI given');
}

Expand Down Expand Up @@ -173,7 +173,7 @@ public function withHost($host)
return $this;
}

if (\preg_match('#[\s_%+]#', $host) || ($host !== '' && \parse_url('http://' . $host, \PHP_URL_HOST) !== $host)) {
if (\preg_match('#[\s%+]#', $host) || ($host !== '' && \parse_url('http://' . $host, \PHP_URL_HOST) !== $host)) {
throw new \InvalidArgumentException('Invalid URI host given');
}

Expand Down
13 changes: 13 additions & 0 deletions tests/Message/UriTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,9 @@ public static function provideValidUris()
),
array(
'http://user%20name:pass%20word@localhost/path%20name?query%20name#frag%20ment'
),
array(
'http://docker_container/'
)
);
}
Expand Down Expand Up @@ -338,6 +341,16 @@ public function testWithHostReturnsNewInstanceWhenHostIsChanged()
$this->assertEquals('localhost', $uri->getHost());
}

public function testWithHostReturnsNewInstanceWhenHostIsChangedWithUnderscore()
{
$uri = new Uri('http://localhost');

$new = $uri->withHost('docker_container');
$this->assertNotSame($uri, $new);
$this->assertEquals('docker_container', $new->getHost());
$this->assertEquals('localhost', $uri->getHost());
}

public function testWithHostReturnsNewInstanceWithHostToLowerCaseWhenHostIsChangedWithUpperCase()
{
$uri = new Uri('http://localhost');
Expand Down

0 comments on commit 71c0e5c

Please sign in to comment.