Completed
Push — master ( 4e104c...fd521f )
by Enrico
02:46
created

CRUDControllerProvider   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 4
dl 0
loc 55
ccs 26
cts 26
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getSchemaId() 0 4 1
A __construct() 0 5 1
B connect() 0 36 2
1
<?php
2
3
namespace Resourceful;
4
5
use Silex\Api\ControllerProviderInterface;
6
use Silex\Application;
7
8
class CRUDControllerProvider implements ControllerProviderInterface
9
{	
0 ignored issues
show
Coding Style introduced by
The opening class brace should be on a newline by itself.
Loading history...
10
	private $schemaId;
11
12
13 2
	public function getSchemaId()
14
	{
15 2
		return $this->schemaId;
16
	}
17
18
19 2
	public function __construct($schemaId)
20
	{
21 2
		assert (!empty($schemaId));
22 2
		$this->schemaId=$schemaId;
23 2
	}
24
25
	
26 2
    public function connect(Application $app)
27
    {
28 2
		$routeName=$schemaId=$this->getSchemaId();
29
		
30 2
		if(isset($app["$routeName.controller"])){
31 1
			$app->abort(500,"Route $routeName mounted twice");
32
		}
33
		$app["$routeName.controller"] = function() use($schemaId){
34
			return new CRUDResourceController($schemaId);
35
		};
36
			
37
		// define middleware handlers
38 2
		$addCrudSchemaHandler = new SchemaHandler($schemaId, "crud");
39 2
		$addSchemaProfileHandler = new DescribedBySchemaHandler($schemaId);
40
		
41
		// define crud controllers
42 2
		$controllers = $app["controllers_factory"];
43 2
        $controllers->post("/", "$routeName.controller:create")
44 2
			->before($addCrudSchemaHandler)
45 2
			->after($addSchemaProfileHandler)
46
		;
47 2
        $controllers->get("/{id}", "$routeName.controller:read")
48 2
        	->bind($routeName)
49 2
			->before($addCrudSchemaHandler)
50 2
			->after($addSchemaProfileHandler)
51
		;	
52 2
        $controllers->put("/{id}", "$routeName.controller:update")
53 2
			->before($addCrudSchemaHandler)
54 2
			->after($addSchemaProfileHandler)
55
		;
56 2
        $controllers->delete("/{id}","$routeName.controller:delete")
57 2
			->before($addCrudSchemaHandler)
58
		;
59
		
60 2
        return $controllers;
61
    }
62
}
63