Completed
Push — master ( 9be0de...4e104c )
by Enrico
06:20
created

CRUDControllerProvider::connect()   B

Complexity

Conditions 2
Paths 2

Size

Total Lines 36
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 19
CRAP Score 2.0005

Importance

Changes 0
Metric Value
dl 0
loc 36
ccs 19
cts 20
cp 0.95
rs 8.8571
c 0
b 0
f 0
cc 2
eloc 22
nc 2
nop 1
crap 2.0005
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
	public function getSchemaId(){return $this->schemaId;}
13
14 1
	public function __construct($schemaId)
15
	{
16 1
		assert (!empty($schemaId));
17 1
		$this->schemaId=$schemaId;
18 1
	}
19
	
20 1
    public function connect(Application $app)
21
    {
22 1
		$routeName=$schemaId=$this->getSchemaId();
23
		
24 1
		if(isset($app["$routeName.controller"])){
25
			$app->abort(500,"Route $routeName mounted twice");
26
		}
27
		$app["$routeName.controller"] = function() use($schemaId){
28
			return new CRUDResourceController($schemaId);
29
		};
30
			
31
		// define middleware handlers
32 1
		$addCrudSchemaHandler = new SchemaHandler($schemaId, "crud");
33 1
		$addSchemaProfileHandler = new DescribedBySchemaHandler($schemaId);
34
		
35
		// define crud controllers
36 1
		$controllers = $app["controllers_factory"];
37 1
        $controllers->post("/", "$routeName.controller:create")
38 1
			->before($addCrudSchemaHandler)
39 1
			->after($addSchemaProfileHandler)
40
		;
41 1
        $controllers->get("/{id}", "$routeName.controller:read")
42 1
        	->bind($routeName)
43 1
			->before($addCrudSchemaHandler)
44 1
			->after($addSchemaProfileHandler)
45
		;	
46 1
        $controllers->put("/{id}", "$routeName.controller:update")
47 1
			->before($addCrudSchemaHandler)
48 1
			->after($addSchemaProfileHandler)
49
		;
50 1
        $controllers->delete("/{id}","$routeName.controller:delete")
51 1
			->before($addCrudSchemaHandler)
52
		;
53
		
54 1
        return $controllers;
55
    }
56
}
57