IndexInterpreter   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 29
ccs 15
cts 15
cp 1
rs 10
c 0
b 0
f 0
wmc 6

2 Methods

Rating   Name   Duplication   Size   Complexity  
A obtainBlobs() 0 15 5
A blobFromSimpleXml() 0 6 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PhpCfdi\RfcLinc\Updater;
6
7
use SimpleXMLElement;
8
9
class IndexInterpreter
10
{
11
    /**
12
     * @param string $source
13
     * @return Blob[]
14
     */
15 4
    public function obtainBlobs(string $source): array
16
    {
17
        try {
18 4
            $xml = new SimpleXMLElement($source, LIBXML_NONET);
19 1
        } catch (\Exception $exception) {
20 1
            throw new \DomainException('The source is not a valid xml content', 0, $exception);
21
        }
22 3
        if (! isset($xml->{'Blobs'}) || ! isset($xml->{'Blobs'}->{'Blob'})) {
23 1
            return [];
24
        }
25 2
        $blobs = [];
26 2
        foreach ($xml->{'Blobs'}->{'Blob'} as $xmlBlob) {
27 2
            $blobs[] = $this->blobFromSimpleXml($xmlBlob);
28
        }
29 2
        return $blobs;
30
    }
31
32 3
    public function blobFromSimpleXml(SimpleXMLElement $xmlBlob): Blob
33
    {
34 3
        return new Blob(
35 3
            (string) $xmlBlob->{'Name'},
36 3
            (string) $xmlBlob->{'Url'},
37 3
            (string) $xmlBlob->{'Properties'}->{'Content-MD5'}
38
        );
39
    }
40
}
41