CurrencyServiceFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 8
dl 0
loc 24
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A createService() 0 12 3
1
<?php
2
3
namespace Movavi\Factory;
4
5
use Movavi\Builder\CbrRateBuilder;
6
use Movavi\Builder\RbcRateBuilder;
7
use Movavi\Exception\UnknownServiceException;
8
use Movavi\Http\Client;
9
use Movavi\Service\CbrService;
10
use Movavi\Service\CurrencyServiceInterface;
11
use Movavi\Service\RbcService;
12
13
/**
14
 * Class CurrencyServiceFactory
15
 *
16
 * Rate services factory method (GoF)
17
 *
18
 * @package Movavi\Factory
19
 */
20
class CurrencyServiceFactory
21
{
22
    /**
23
     * Returns an instance of suitable service
24
     *
25
     * @param string $name
26
     *
27
     * @return CurrencyServiceInterface
28
     *
29
     * @throws UnknownServiceException
30
     * @throws \Movavi\Exception\DisallowedUrlException
31
     */
32
    public function createService(string $name): CurrencyServiceInterface
33
    {
34
        switch (mb_strtoupper($name)) {
35
36
            case CbrService::NAME:
37
                return new CbrService(new Client(), new CbrRateBuilder());
38
39
            case RbcService::NAME:
40
                return new RbcService(new Client(), new RbcRateBuilder());
41
42
            default:
43
                throw new UnknownServiceException();
44
        }
45
    }
46
}
47