Merge "Provide command to adjust phpunit.xml for code coverage"
[lhc/web/wiklou.git] / includes / Rest / SimpleHandler.php
1 <?php
2
3 namespace MediaWiki\Rest;
4
5 /**
6 * A handler base class which unpacks parameters from the path template and
7 * passes them as formal parameters to run().
8 *
9 * run() must be declared in the subclass. It cannot be declared as abstract
10 * here because it has a variable parameter list.
11 * @todo Declare it as abstract after dropping HHVM
12 *
13 * @package MediaWiki\Rest
14 */
15 class SimpleHandler extends Handler {
16 public function execute() {
17 $paramSettings = $this->getParamSettings();
18 $validatedParams = $this->getValidatedParams();
19 $unvalidatedParams = [];
20 $params = [];
21 foreach ( $this->getRequest()->getPathParams() as $name => $value ) {
22 $source = $paramSettings[$name][self::PARAM_SOURCE] ?? 'unknown';
23 if ( $source !== 'path' ) {
24 $unvalidatedParams[] = $name;
25 $params[] = $value;
26 } else {
27 $params[] = $validatedParams[$name];
28 }
29 }
30
31 if ( $unvalidatedParams ) {
32 throw new \LogicException(
33 'Path parameters were not validated: ' . implode( ', ', $unvalidatedParams )
34 );
35 }
36
37 // @phan-suppress-next-line PhanUndeclaredMethod
38 return $this->run( ...$params );
39 }
40 }