TatraPayExtension   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 0
dl 0
loc 56
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B loadConfiguration() 0 25 1
A beforeCompile() 0 18 4
1
<?php
2
3
namespace PaySys\TatraPay\DI;
4
5
use Nette\DI\CompilerExtension;
6
use PaySys\TatraPay\Configuration;
7
8
9
class TatraPayExtension extends CompilerExtension
10
{
11
	const BASE_ROUTE = "TatraPay:TatraPay:process";
12
13
	/** @var [] */
14
	private $defaults = [
15
		"mid" => "",
16
		"rurl" => self::BASE_ROUTE,
17
		"key" => "",
18
	];
19
20
	public function loadConfiguration()
21
	{
22
		$this->validateConfig($this->defaults);
23
24
		$builder = $this->getContainerBuilder();
25
26
		$builder->addDefinition($this->prefix('config'))
27
			->setClass('PaySys\TatraPay\Configuration', [
28
				'mid' => $this->config['mid'],
29
				'rurl' => $this->config['rurl'],
30
				'key' => $this->config['key'],
31
			]);
32
33
		$builder->addDefinition($this->prefix('button'))
34
			->setImplement('PaySys\TatraPay\IButtonFactory')
35
			->setFactory('PaySys\PaySys\Button', [
36
				'config' => $this->prefix('@config'),
37
			]);
38
39
		$builder->addDefinition($this->prefix('request'))
40
			->setClass('PaySys\TatraPay\Security\Request');
41
42
		$builder->addDefinition($this->prefix('response'))
43
			->setClass('PaySys\TatraPay\Security\Response');
44
	}
45
46
	public function beforeCompile()
47
	{
48
		$builder = $this->getContainerBuilder();
49
50
		if ($this->config['rurl'] === self::BASE_ROUTE) {
51
			if ($builder->hasDefinition('routing.router')) {
52
				$netteRouter = $builder->getDefinition('routing.router');
53
				$netteRouter->addSetup('$service->prepend(new Nette\Application\Routers\Route(\'cardpay-process\', ?));', [self::BASE_ROUTE]);
54
			}
55
56
			if ($builder->hasDefinition('nette.presenterFactory')) {
57
				$builder->getDefinition('nette.presenterFactory')
58
					->addSetup('setMapping', [
59
						['TatraPay' => 'PaySys\TatraPay\Application\UI\*Presenter'],
60
					]);
61
			}
62
		}
63
	}
64
}
65