]> git.mxchange.org Git - friendica.git/commitdiff
Add HTTP method to App\Arguments
authorPhilipp <admin@philipp.info>
Sun, 2 Jan 2022 21:21:41 +0000 (22:21 +0100)
committerPhilipp <admin@philipp.info>
Tue, 4 Jan 2022 19:59:25 +0000 (20:59 +0100)
src/App/Arguments.php
tests/src/App/ArgumentsTest.php

index ef1ed928563ea72665f17138c2776d0c012ea8d9..ce247408398c889535460f3447a03b62ea1c123a 100644 (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);
        }
 }
index e41c99acb8ca8170643b4ae931f912598c799007..51931fe812c67b7c9b0ff6f1267b22fc4e2e5706 100644 (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'
+                               ],
+                       ],
                ];
        }