IgfsCgFactory::make()   A
last analyzed

Complexity

Conditions 5
Paths 6

Size

Total Lines 38
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 5

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 17
c 1
b 0
f 0
nc 6
nop 1
dl 0
loc 38
ccs 18
cts 18
cp 1
crap 5
rs 9.3888
1
<?php
2
3
namespace PagOnline;
4
5
use Illuminate\Support\Facades\Config;
6
use PagOnline\Exceptions\ClassNotFoundException;
7
8
/**
9
 * Class IgfsCgFactory.
10
 */
11
class IgfsCgFactory
12
{
13
    /**
14
     * @param string $namespace
15
     *
16
     * @throws \PagOnline\Exceptions\ClassNotFoundException
17
     *
18
     * @return \PagOnline\Init\IgfsCgInit|\PagOnline\Init\IgfsCgSelector|\PagOnline\Init\IgfsCgVerify|\PagOnline\Mpi\IgfsCgMpiAuth|\PagOnline\Mpi\IgfsCgMpiEnroll|\PagOnline\PayByMail\IgfsCgPayByMailInit|\PagOnline\PayByMail\IgfsCgPayByMailVerify|\PagOnline\Tokenizer\IgfsCgTokenizerCheck|\PagOnline\Tokenizer\IgfsCgTokenizerDelete|\PagOnline\Tokenizer\IgfsCgTokenizerEnroll|\PagOnline\Tran\IgfsCgAuth|\PagOnline\Tran\IgfsCgConfirm|\PagOnline\Tran\IgfsCgCredit|\PagOnline\Tran\IgfsCgVoidAuth
19
     */
20 3
    public static function make(string $namespace): IgfsCgInterface
21
    {
22 3
        if (\class_exists($namespace)) {
23
            /**
24
             * @var \PagOnline\Init\IgfsCgInit|\PagOnline\Init\IgfsCgSelector|\PagOnline\Init\IgfsCgVerify
25
             * @var \PagOnline\PayByMail\IgfsCgPayByMailInit|\PagOnline\PayByMail\IgfsCgPayByMailVerify                                             $igfsCgClass
26
             * @var \PagOnline\Mpi\IgfsCgMpiAuth|\PagOnline\Mpi\IgfsCgMpiEnroll                                                                     $igfsCgClass
27
             * @var \PagOnline\Tokenizer\IgfsCgTokenizerCheck|\PagOnline\Tokenizer\IgfsCgTokenizerDelete|\PagOnline\Tokenizer\IgfsCgTokenizerEnroll $igfsCgClass
28
             * @var \PagOnline\Tran\IgfsCgAuth|\PagOnline\Tran\IgfsCgConfirm|\PagOnline\Tran\IgfsCgCredit|\PagOnline\Tran\IgfsCgVoidAuth            $igfsCgClass
29
             */
30 2
            $igfsCgClass = new $namespace();
31
            // If Laravel helper function 'config' exists, I'll try to load configuration from .env file
32 2
            if (\class_exists('Config')) {
33 1
                $igfsCgClass->serverURL = Config::get('pagonline.server_url');
34 1
                $igfsCgClass->tid = Config::get('pagonline.terminal_id');
35 1
                $igfsCgClass->kSig = Config::get('pagonline.signature_key');
36
37
                // Checking if the class have these two properties
38 1
                if (\property_exists($igfsCgClass, 'currencyCode')) {
39 1
                    $igfsCgClass->currencyCode = Config::get('pagonline.currency_code');
40
                }
41
42 1
                if (\property_exists($igfsCgClass, 'langID')) {
43 1
                    $igfsCgClass->langID = Config::get('pagonline.language_id');
44
                }
45
46
                // HTTP configuration
47 1
                $igfsCgClass->setRequestTimeout((int) Config::get('pagonline.request_timeout'));
48 1
                $igfsCgClass->setConnectTimeout((int) Config::get('pagonline.connect_timeout'));
49 1
                $igfsCgClass->setHttpProxy(Config::get('pagonline.http_proxy'));
50 1
                $igfsCgClass->setHttpAuthUser(Config::get('pagonline.http_basic_auth_user'));
51 1
                $igfsCgClass->setHttpAuthUser(Config::get('pagonline.http_basic_auth_pass'));
52
            }
53
54 2
            return $igfsCgClass;
55
        }
56
57 1
        throw new ClassNotFoundException("Class {$namespace} does not exists");
58
    }
59
}
60