Builder   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 21
dl 0
loc 39
rs 10
c 1
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A build() 0 30 2
A __construct() 0 2 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace GusApi\Client;
6
7
use GusApi\Context\Context;
8
use GusApi\Environment\EnvironmentFactory;
9
use GusApi\Type\Response\GetBulkReportResponseRaw;
10
use GusApi\Type\Response\GetFullReportResponseRaw;
11
use GusApi\Type\Response\GetValueResponse;
12
use GusApi\Type\Response\LoginResponse;
13
use GusApi\Type\Response\LogoutResponse;
14
use GusApi\Type\Response\SearchResponseRaw;
15
use SoapFault;
16
17
final class Builder implements BuilderInterface
18
{
19
    public function __construct(private string $environment, private ?GusApiClient $gusApiClient = null)
20
    {
21
    }
22
23
    /**
24
     * @throws SoapFault
25
     */
26
    public function build(): GusApiClient
27
    {
28
        if (null !== $this->gusApiClient) {
29
            return $this->gusApiClient;
30
        }
31
32
        $env = EnvironmentFactory::create($this->environment);
33
        $context = new Context();
34
35
        $options = [
36
            'soap_version' => \SOAP_1_2,
37
            'trace' => true,
38
            'style' => \SOAP_DOCUMENT,
39
            'stream_context' => $context->getContext(),
40
            'classmap' => [
41
                'ZalogujResponse' => LoginResponse::class,
42
                'WylogujResponse' => LogoutResponse::class,
43
                'GetValueResponse' => GetValueResponse::class,
44
                'DaneSzukajPodmiotyResponse' => SearchResponseRaw::class,
45
                'DanePobierzPelnyRaportResponse' => GetFullReportResponseRaw::class,
46
                'DanePobierzRaportZbiorczyResponse' => GetBulkReportResponseRaw::class,
47
            ],
48
        ];
49
50
        $soap = new SoapClient(
51
            $env->getWSDLUrl(),
52
            $options
53
        );
54
55
        return new GusApiClient($soap, $env->getServerLocationUrl(), $context);
56
    }
57
}
58