Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F1431644
Request.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
Request.php
View Options
<?php
declare
(
strict_types
=
1
);
namespace
GuzzleHttp\Psr7
;
use
InvalidArgumentException
;
use
Psr\Http\Message\RequestInterface
;
use
Psr\Http\Message\StreamInterface
;
use
Psr\Http\Message\UriInterface
;
/**
* PSR-7 request implementation.
*/
class
Request
implements
RequestInterface
{
use
MessageTrait
;
/** @var string */
private
$method
;
/** @var string|null */
private
$requestTarget
;
/** @var UriInterface */
private
$uri
;
/**
* @param string $method HTTP method
* @param string|UriInterface $uri URI
* @param (string|string[])[] $headers Request headers
* @param string|resource|StreamInterface|null $body Request body
* @param string $version Protocol version
*/
public
function
__construct
(
string
$method
,
$uri
,
array
$headers
=
[],
$body
=
null
,
string
$version
=
'1.1'
)
{
$this
->
assertMethod
(
$method
);
if
(!(
$uri
instanceof
UriInterface
))
{
$uri
=
new
Uri
(
$uri
);
}
$this
->
method
=
strtoupper
(
$method
);
$this
->
uri
=
$uri
;
$this
->
setHeaders
(
$headers
);
$this
->
protocol
=
$version
;
if
(!
isset
(
$this
->
headerNames
[
'host'
]))
{
$this
->
updateHostFromUri
();
}
if
(
$body
!==
''
&&
$body
!==
null
)
{
$this
->
stream
=
Utils
::
streamFor
(
$body
);
}
}
public
function
getRequestTarget
():
string
{
if
(
$this
->
requestTarget
!==
null
)
{
return
$this
->
requestTarget
;
}
$target
=
$this
->
uri
->
getPath
();
if
(
$target
===
''
)
{
$target
=
'/'
;
}
if
(
$this
->
uri
->
getQuery
()
!=
''
)
{
$target
.=
'?'
.
$this
->
uri
->
getQuery
();
}
return
$target
;
}
public
function
withRequestTarget
(
$requestTarget
):
RequestInterface
{
if
(
preg_match
(
'#
\s
#'
,
$requestTarget
))
{
throw
new
InvalidArgumentException
(
'Invalid request target provided; cannot contain whitespace'
);
}
$new
=
clone
$this
;
$new
->
requestTarget
=
$requestTarget
;
return
$new
;
}
public
function
getMethod
():
string
{
return
$this
->
method
;
}
public
function
withMethod
(
$method
):
RequestInterface
{
$this
->
assertMethod
(
$method
);
$new
=
clone
$this
;
$new
->
method
=
strtoupper
(
$method
);
return
$new
;
}
public
function
getUri
():
UriInterface
{
return
$this
->
uri
;
}
public
function
withUri
(
UriInterface
$uri
,
$preserveHost
=
false
):
RequestInterface
{
if
(
$uri
===
$this
->
uri
)
{
return
$this
;
}
$new
=
clone
$this
;
$new
->
uri
=
$uri
;
if
(!
$preserveHost
||
!
isset
(
$this
->
headerNames
[
'host'
]))
{
$new
->
updateHostFromUri
();
}
return
$new
;
}
private
function
updateHostFromUri
():
void
{
$host
=
$this
->
uri
->
getHost
();
if
(
$host
==
''
)
{
return
;
}
if
((
$port
=
$this
->
uri
->
getPort
())
!==
null
)
{
$host
.=
':'
.
$port
;
}
if
(
isset
(
$this
->
headerNames
[
'host'
]))
{
$header
=
$this
->
headerNames
[
'host'
];
}
else
{
$header
=
'Host'
;
$this
->
headerNames
[
'host'
]
=
'Host'
;
}
// Ensure Host is the first header.
// See: https://datatracker.ietf.org/doc/html/rfc7230#section-5.4
$this
->
headers
=
[
$header
=>
[
$host
]]
+
$this
->
headers
;
}
/**
* @param mixed $method
*/
private
function
assertMethod
(
$method
):
void
{
if
(!
is_string
(
$method
)
||
$method
===
''
)
{
throw
new
InvalidArgumentException
(
'Method must be a non-empty string.'
);
}
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, May 16, 20:53 (1 d, 5 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
ee/52/87554f2799c01df8ad714a747fe3
Default Alt Text
Request.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment