ServerRequest::getServerRequest reads method, request target, and protocol version from request.
This commit is contained in:
parent
963e1acd58
commit
79be20c826
|
|
@ -8,11 +8,11 @@ use Psr\Http\Message\UriInterface;
|
||||||
class Request extends Message implements RequestInterface
|
class Request extends Message implements RequestInterface
|
||||||
{
|
{
|
||||||
/** @var string */
|
/** @var string */
|
||||||
private $method = "GET";
|
protected $method = "GET";
|
||||||
/** @var string */
|
/** @var string */
|
||||||
private $requestTarget;
|
protected $requestTarget;
|
||||||
/** @var UriInterface */
|
/** @var UriInterface */
|
||||||
private $uri;
|
protected $uri;
|
||||||
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
// Psr\Http\Message\RequestInterface
|
// Psr\Http\Message\RequestInterface
|
||||||
|
|
|
||||||
|
|
@ -299,6 +299,16 @@ class ServerRequest extends Request implements ServerRequestInterface
|
||||||
if (isset($_SERVER["QUERY_STRING"])) {
|
if (isset($_SERVER["QUERY_STRING"])) {
|
||||||
parse_str($_SERVER["QUERY_STRING"], $this->queryParams);
|
parse_str($_SERVER["QUERY_STRING"], $this->queryParams);
|
||||||
}
|
}
|
||||||
|
if (isset($_SERVER["SERVER_PROTOCOL"]) && $_SERVER["SERVER_PROTOCOL"] === "HTTP/1.0") {
|
||||||
|
// The default is 1.1, so only update if 1.0
|
||||||
|
$this->protcolVersion = "1.0";
|
||||||
|
}
|
||||||
|
if (isset($_SERVER["REQUEST_METHOD"])) {
|
||||||
|
$this->method = $_SERVER["REQUEST_METHOD"];
|
||||||
|
}
|
||||||
|
if (isset($_SERVER["REQUEST_URI"])) {
|
||||||
|
$this->requestTarget = $_SERVER["REQUEST_URI"];
|
||||||
|
}
|
||||||
$headers = $this->getServerRequestHeaders();
|
$headers = $this->getServerRequestHeaders();
|
||||||
foreach ($headers as $key => $value) {
|
foreach ($headers as $key => $value) {
|
||||||
$this->headers[$key] = $value;
|
$this->headers[$key] = $value;
|
||||||
|
|
|
||||||
|
|
@ -321,6 +321,84 @@ class ServerRequestTest extends \PHPUnit_Framework_TestCase
|
||||||
$headers = $request->getHeaders();
|
$headers = $request->getHeaders();
|
||||||
$this->assertNotNull($headers);
|
$this->assertNotNull($headers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::readFromServerRequest
|
||||||
|
* @preserveGlobalState disabled
|
||||||
|
* @dataProvider protocolVersionProvider
|
||||||
|
*/
|
||||||
|
public function testReadsProtocolVersionFromFromRequest($expectedProtocol, $serverProtocol)
|
||||||
|
{
|
||||||
|
$_SERVER = [
|
||||||
|
"HTTP_HOST" => "localhost",
|
||||||
|
"SERVER_PROTOCOL" => $serverProtocol,
|
||||||
|
"REQUEST_METHOD" => "GET"
|
||||||
|
];
|
||||||
|
$request = ServerRequest::getServerRequest();
|
||||||
|
$this->assertEquals($expectedProtocol, $request->getProtocolVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function protocolVersionProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
["1.1", "HTTP/1.1"],
|
||||||
|
["1.0", "HTTP/1.0"],
|
||||||
|
["1.1", null],
|
||||||
|
["1.1", "INVALID"]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::readFromServerRequest
|
||||||
|
* @preserveGlobalState disabled
|
||||||
|
* @dataProvider methodProvider
|
||||||
|
*/
|
||||||
|
public function testReadsMethodFromFromRequest($exectedMethod, $serverMethod)
|
||||||
|
{
|
||||||
|
$_SERVER = [
|
||||||
|
"HTTP_HOST" => "localhost",
|
||||||
|
"REQUEST_METHOD" => $serverMethod
|
||||||
|
];
|
||||||
|
$request = ServerRequest::getServerRequest();
|
||||||
|
$this->assertEquals($exectedMethod, $request->getMethod());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function methodProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
["GET", "GET"],
|
||||||
|
["POST", "POST"],
|
||||||
|
["DELETE", "DELETE"],
|
||||||
|
["PUT", "PUT"],
|
||||||
|
["OPTIONS", "OPTIONS"],
|
||||||
|
["GET", null]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers WellRESTed\Message\ServerRequest::readFromServerRequest
|
||||||
|
* @preserveGlobalState disabled
|
||||||
|
* @dataProvider requestTargetProvider
|
||||||
|
*/
|
||||||
|
public function testReadsRequestTargetFromServer($exectedRequestTarget, $serverRequestUri)
|
||||||
|
{
|
||||||
|
$_SERVER = [
|
||||||
|
"HTTP_HOST" => "localhost",
|
||||||
|
"REQUEST_URI" => $serverRequestUri
|
||||||
|
];
|
||||||
|
$request = ServerRequest::getServerRequest();
|
||||||
|
$this->assertEquals($exectedRequestTarget, $request->getRequestTarget());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function requestTargetProvider()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
["/", "/"],
|
||||||
|
["/hello", "/hello"],
|
||||||
|
["/my/path.txt", "/my/path.txt"],
|
||||||
|
["/", null]
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue