Completed
Push — master ( 0820ba...224783 )
by ARCANEDEV
8s
created

ConverterManager::getProviderConfigs()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

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