Completed
Push — master ( 35f9c1...7f1afc )
by Xavier
01:04
created

IdentifierResolver::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
3
namespace PubPeerFoundation\PublicationDataExtractor;
4
5
use PubPeerFoundation\PublicationDataExtractor\Exceptions\UnknownIdentifierException;
6
7
class IdentifierResolver
8
{
9
    /**
10
     * List of available Identifiers.
11
     *
12
     * @var array
13
     */
14
    protected $identifiers = [
15
        Identifiers\BioRxiv::class,
16
        Identifiers\Figshare::class,
17
        Identifiers\Doi::class,
18
        Identifiers\Arxiv::class,
19
        Identifiers\Pubmed::class,
20
    ];
21
22
    /**
23
     * The query string.
24
     *
25
     * @var string
26
     */
27
    private $queryString;
28
29
    /**
30
     * Identifier constructor.
31
     *
32
     * @param string $queryString
33
     */
34
    public function __construct(string $queryString)
35
    {
36
        $this->queryString = $queryString;
37
    }
38
39
    /**
40
     * Resolves the Identifier;.
41
     *
42
     * @return Identifiers\Identifier
43
     *
44
     * @throws UnknownIdentifierException
45
     */
46
    public function handle()
47
    {
48
        foreach ($this->identifiers as $identifierClass) {
49
            $identifier = new $identifierClass($this->queryString);
50
51
            if ($identifier->isValid()) {
52
                return $identifier;
53
            }
54
        }
55
56
        throw new UnknownIdentifierException();
57
    }
58
}
59