Passed
Push — master ( 9c1274...95a447 )
by Jean-Christophe
06:00
created

RestControllerParser   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 12
eloc 29
dl 0
loc 49
ccs 30
cts 30
cp 1
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A asArray() 0 2 1
A __construct() 0 3 1
A isRest() 0 2 1
B parse() 0 17 7
A _getResourceName() 0 6 2
1
<?php
2
3
namespace Ubiquity\cache\parser;
4
5
use Ubiquity\orm\parser\Reflexion;
6
use Ubiquity\cache\ClassUtils;
7
use Ubiquity\controllers\rest\RestBaseController;
8
9
class RestControllerParser {
10
	private $controllerClass;
11
	private $resource;
12
	private $route;
13
	private $rest;
14
	private $authorizationMethods;
15
16 1
	public function __construct() {
17 1
		$this->rest=false;
18 1
		$this->authorizationMethods=[ ];
19 1
	}
20
21 1
	public function parse($controllerClass, $config) {
22 1
		$this->controllerClass=$controllerClass;
23 1
		$reflect=new \ReflectionClass($controllerClass);
24 1
		if (!$reflect->isAbstract() && $reflect->isSubclassOf(RestBaseController::class)) {
25 1
			$restAnnotsClass=Reflexion::getAnnotationClass($controllerClass, "@rest");
26 1
			if (\sizeof($restAnnotsClass) > 0) {
27 1
				$routeAnnotsClass=Reflexion::getAnnotationClass($controllerClass, "@route");
28 1
				if (\sizeof($routeAnnotsClass) > 0) {
29 1
					$this->route=$routeAnnotsClass[0]->path;
30
				}
31 1
				$this->resource=$this->_getResourceName($config, $restAnnotsClass[0]->resource);
32 1
				$this->rest=true;
33 1
				$methods=Reflexion::getMethods($controllerClass, \ReflectionMethod::IS_PUBLIC);
34 1
				foreach ( $methods as $method ) {
35 1
					$annots=Reflexion::getAnnotationsMethod($controllerClass, $method->name, "@authorization");
36 1
					if ($annots !== false) {
37 1
						$this->authorizationMethods[]=$method->name;
38
					}
39
				}
40
			}
41
		}
42 1
	}
43
44 1
	private function _getResourceName($config, $name) {
45 1
		if($name!=null){
46 1
			$modelsNS=$config["mvcNS"]["models"];
47 1
			return ClassUtils::getClassNameWithNS($modelsNS, $name);
48
		}
49 1
		return '';
50
	}
51
52 1
	public function asArray() {
53 1
		return [ $this->controllerClass => [ "resource" => $this->resource,"authorizations" => $this->authorizationMethods,"route" => $this->route ] ];
54
	}
55
56 1
	public function isRest() {
57 1
		return $this->rest;
58
	}
59
}
60