Completed
Pull Request — master (#275)
by thomas
146:52 queued 142:54
created

ScriptInfoFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 6

Test Coverage

Coverage 54.55%

Importance

Changes 2
Bugs 0 Features 1
Metric Value
wmc 4
lcom 0
cbo 6
dl 0
loc 23
ccs 6
cts 11
cp 0.5455
rs 10
c 2
b 0
f 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A load() 0 16 4
1
<?php
2
3
namespace BitWasp\Bitcoin\Script\Factory;
4
5
use BitWasp\Bitcoin\Script\ScriptFactory;
6
use BitWasp\Bitcoin\Script\ScriptInfo\ScriptHash;
7
use BitWasp\Bitcoin\Script\ScriptInfo\Multisig;
8
use BitWasp\Bitcoin\Script\ScriptInfo\PayToPubkey;
9
use BitWasp\Bitcoin\Script\ScriptInfo\PayToPubkeyHash;
10
use BitWasp\Bitcoin\Script\ScriptInterface;
11
12
class ScriptInfoFactory
13
{
14
    /**
15
     * @param ScriptInterface $script
16
     * @return \BitWasp\Bitcoin\Script\ScriptInfo\ScriptInfoInterface
17
     */
18 6
    public function load(ScriptInterface $script)
19
    {
20 6
        $classifier = ScriptFactory::scriptPubKey()->classify($script);
21
22 6
        if ($classifier->isMultisig()) {
23 6
            $handler = new Multisig($script);
24 6
        } elseif ($classifier->isPayToPublicKey()) {
25
            $handler = new PayToPubkey($script);
26
        } elseif ($classifier->isPayToPublicKeyHash()) {
27
            $handler = new PayToPubkeyHash($script);
28
        } else {
29
            throw new \InvalidArgumentException('Unparsable script type');
30
        }
31
32 6
        return $handler;
33
    }
34
}
35