Builder::build()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 30
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 20
nc 2
nop 0
dl 0
loc 30
rs 9.6
c 0
b 0
f 0
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