Completed
Push — master ( 1c91e4...0820ba )
by ARCANEDEV
9s
created

ConverterManager   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 0%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
c 4
b 0
f 0
dl 0
loc 90
ccs 0
cts 29
cp 0
rs 10
wmc 6
lcom 1
cbo 3

6 Methods

Rating   Name   Duplication   Size   Complexity  
A createOpenexchangeratesDriver() 0 7 1
A createCurrencylayerDriver() 0 7 1
A getDefaultDriver() 0 4 1
A config() 0 4 1
A getProviderConfigs() 0 7 1
A buildProvider() 0 8 1
1
<?php namespace Arcanedev\Currencies;
2
3
use Arcanedev\Currencies\Contracts\ConverterManager as ConverterManagerContract;
4
use Illuminate\Support\Manager;
5
6
/**
7
 * Class     ConverterManager
8
 *
9
 * @package  Arcanedev\Currencies
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class ConverterManager extends Manager implements ConverterManagerContract
13
{
14
    /* ------------------------------------------------------------------------------------------------
15
     |  Main Functions
16
     | ------------------------------------------------------------------------------------------------
17
     */
18
    /**
19
     * Create an instance of Openexchangerates service.
20
     *
21
     * @return \Arcanedev\Currencies\Contracts\Services\CurrencyService
22
     */
23
    protected function createOpenexchangeratesDriver()
24
    {
25
        return $this->buildProvider(
26
            Services\OpenExchangeRatesService::class,
27
            $this->getProviderConfigs('openexchangerates')
28
        );
29
    }
30
31
    /**
32
     * Create an instance of Currencylayer service.
33
     *
34
     * @return \Arcanedev\Currencies\Contracts\Services\CurrencyService
35
     */
36
    protected function createCurrencylayerDriver()
37
    {
38
        return $this->buildProvider(
39
            Services\CurrencyLayerService::class,
40
            $this->getProviderConfigs('currencylayer')
41
        );
42
    }
43
44
    /**
45
     * Get the default driver name.
46
     *
47
     * @throws \InvalidArgumentException
48
     *
49
     * @return string
50
     */
51
    public function getDefaultDriver()
52
    {
53
        return $this->config()->get('currencies.converters.default');
54
    }
55
56
    /* ------------------------------------------------------------------------------------------------
57
     |  Other Functions
58
     | ------------------------------------------------------------------------------------------------
59
     */
60
    /**
61
     * Get the config repository instance.
62
     *
63
     * @return \Illuminate\Contracts\Config\Repository
64
     */
65
    protected function config()
66
    {
67
        return $this->app['config'];
68
    }
69
70
    /**
71
     * Get the provider configs.
72
     *
73
     * @param  string  $provider
74
     *
75
     * @return array
76
     */
77
    protected function getProviderConfigs($provider)
78
    {
79
        $configs          = $this->config()->get("currencies.converters.providers.$provider");
80
        $configs['cache'] = $this->config()->get("currencies.converters.cache");
81
82
        return $configs;
83
    }
84
85
    /**
86
     * Build the converter provider.
87
     *
88
     * @param  string  $provider
89
     * @param  array   $configs
90
     *
91
     * @return \Arcanedev\Currencies\Contracts\Services\CurrencyService
92
     */
93
    protected function buildProvider($provider, array $configs)
94
    {
95
        return new $provider(
96
            new \Arcanedev\Currencies\Http\Client,
97
            $this->app['cache']->driver(),
98
            $configs
99
        );
100
    }
101
}
102