OtherSource::fromXML()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 11
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace SimpleSAML\XMLSecurity\XML\xenc11;
6
7
use DOMElement;
8
use SimpleSAML\Assert\Assert;
9
use SimpleSAML\XMLSchema\Exception\InvalidDOMElementException;
10
use SimpleSAML\XMLSchema\Exception\TooManyElementsException;
11
use SimpleSAML\XMLSchema\Type\AnyURIValue;
12
13
use function array_pop;
14
15
/**
16
 * A class implementing the xenc11:OtherSource element.
17
 *
18
 * @package simplesamlphp/xml-security
19
 */
20
final class OtherSource extends AbstractAlgorithmIdentifierType
21
{
22
    /**
23
     * @inheritDoc
24
     *
25
     * @throws \SimpleSAML\XMLSchema\Exception\InvalidDOMElementException
26
     *   If the qualified name of the supplied element is wrong
27
     */
28
    public static function fromXML(DOMElement $xml): static
29
    {
30
        Assert::same($xml->localName, static::getLocalName(), InvalidDOMElementException::class);
31
        Assert::same($xml->namespaceURI, static::getNamespaceURI(), InvalidDOMElementException::class);
32
33
        $parameter = Parameters::getChildrenOfClass($xml);
34
        Assert::maxCount($parameter, 1, TooManyElementsException::class);
35
36
        return new static(
37
            self::getAttribute($xml, 'Algorithm', AnyURIValue::class),
38
            array_pop($parameter),
39
        );
40
    }
41
}
42