Add HTTP method to App\Arguments

This commit is contained in:
Philipp Holzer 2022-01-02 22:21:41 +01:00
parent c7f2ba213b
commit ee2a15d822
Signed by: nupplaPhil
GPG key ID: 24A7501396EB5432
2 changed files with 40 additions and 2 deletions

View file

@ -52,14 +52,19 @@ class Arguments
* @var int The count of arguments
*/
private $argc;
/**
* @var string The used HTTP method
*/
private $method;
public function __construct(string $queryString = '', string $command = '', string $moduleName = '', array $argv = [], int $argc = 0)
public function __construct(string $queryString = '', string $command = '', string $moduleName = '', array $argv = [], int $argc = 0, string $method = Router::GET)
{
$this->queryString = $queryString;
$this->command = $command;
$this->moduleName = $moduleName;
$this->argv = $argv;
$this->argc = $argc;
$this->method = $method;
}
/**
@ -94,6 +99,11 @@ class Arguments
return $this->argv;
}
public function getMethod()
{
return $this->method;
}
/**
* @return int The count of arguments of this call
*/
@ -199,6 +209,8 @@ class Arguments
$module = "login";
}
return new Arguments($queryString, $command, $module, $argv, $argc);
$httpMethod = in_array($server['REQUEST_METHOD'] ?? '', Router::ALLOWED_METHODS) ? $server['REQUEST_METHOD'] : Router::GET;
return new Arguments($queryString, $command, $module, $argv, $argc, $httpMethod);
}
}

View file

@ -32,6 +32,7 @@ class ArgumentsTest extends TestCase
self::assertEquals($assert['command'], $arguments->getCommand());
self::assertEquals($assert['argv'], $arguments->getArgv());
self::assertEquals($assert['argc'], $arguments->getArgc());
self::assertEquals($assert['method'], $arguments->getMethod());
self::assertCount($assert['argc'], $arguments->getArgv());
}
@ -47,6 +48,7 @@ class ArgumentsTest extends TestCase
'command' => '',
'argv' => [],
'argc' => 0,
'method' => App\Router::GET
],
$arguments);
}
@ -60,6 +62,7 @@ class ArgumentsTest extends TestCase
'command' => 'profile/test/it',
'argv' => ['profile', 'test', 'it'],
'argc' => 3,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'pagename=profile/test/it&arg1=value1&arg2=value2',
@ -74,6 +77,7 @@ class ArgumentsTest extends TestCase
'command' => '~test/it',
'argv' => ['~test', 'it'],
'argc' => 2,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'pagename=~test/it&arg1=value1&arg2=value2',
@ -88,6 +92,7 @@ class ArgumentsTest extends TestCase
'command' => 'u/test/it',
'argv' => ['u', 'test', 'it'],
'argc' => 3,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'pagename=u/test/it&arg1=value1&arg2=value2',
@ -102,6 +107,7 @@ class ArgumentsTest extends TestCase
'command' => 'profile/test/it',
'argv' => ['profile', 'test', 'it'],
'argc' => 3,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'pagename=profile/test/it&arg1=value1&arg2=value2/',
@ -116,6 +122,7 @@ class ArgumentsTest extends TestCase
'command' => 'profile/test/it',
'argv' => ['profile', 'test', 'it'],
'argc' => 3,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'wrong=profile/test/it&arg1=value1&arg2=value2/',
@ -130,6 +137,7 @@ class ArgumentsTest extends TestCase
'command' => 'notvalid/it',
'argv' => ['notvalid', 'it'],
'argc' => 2,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'pagename=notvalid/it&arg1=value1&arg2=value2/',
@ -143,6 +151,7 @@ class ArgumentsTest extends TestCase
'command' => '',
'argv' => [],
'argc' => 0,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'arg1=value1&arg2=value2/',
@ -156,6 +165,7 @@ class ArgumentsTest extends TestCase
'command' => 'api/call.json',
'argv' => ['api', 'call.json'],
'argc' => 2,
'method' => App\Router::GET,
],
'server' => [
'QUERY_STRING' => 'pagename=api/call.json',
@ -164,6 +174,22 @@ class ArgumentsTest extends TestCase
'pagename' => 'api/call.json'
],
],
'withHTTPMethod' => [
'assert' => [
'queryString' => 'api/call.json',
'command' => 'api/call.json',
'argv' => ['api', 'call.json'],
'argc' => 2,
'method' => App\Router::POST,
],
'server' => [
'QUERY_STRING' => 'pagename=api/call.json',
'REQUEST_METHOD' => App\Router::POST,
],
'get' => [
'pagename' => 'api/call.json'
],
],
];
}