Passed
Push — master ( 2bbdf9...f98864 )
by Michel
03:35 queued 10s
created

SyncOptionsFactory::__invoke()   B

Complexity

Conditions 9
Paths 2

Size

Total Lines 19
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 9.0468

Importance

Changes 0
Metric Value
eloc 11
dl 0
loc 19
ccs 11
cts 12
cp 0.9167
rs 8.0555
c 0
b 0
f 0
cc 9
nc 2
nop 3
crap 9.0468
1
<?php
2
declare(strict_types=1);
3
4
namespace TogglJira\Options;
5
6
use Interop\Container\ContainerInterface;
7
use Zend\Config\Reader\Json;
8
use Zend\ServiceManager\Factory\FactoryInterface;
9
10
class SyncOptionsFactory implements FactoryInterface
11
{
12
    /**
13
     * {@inheritdoc}
14
     */
15 1
    public function __invoke(ContainerInterface $container, $requestedName, array $options = null): SyncOptions
16
    {
17 1
        $reader = new Json();
18 1
        $config = $reader->fromFile(__DIR__ . '/../../../../config.json');
19
20 1
        if ((!isset($config['jiraUsername']) || empty($config['jiraUsername'])) ||
21 1
        (!isset($config['jiraPassword']) || empty($config['jiraPassword'])) ||
22 1
        (!isset($config['togglApiKey']) || empty($config['togglApiKey'])) ||
23 1
        (!isset($config['jiraUrl']) || empty($config['jiraUrl']))
24
        ) {
25
            throw new \RuntimeException('Invalid config.json, please fill out everything except lastSync');
26
        }
27
28 1
        $config['lastSync'] = new \DateTimeImmutable(
29 1
            $config['lastSync']['date'],
30 1
            new \DateTimeZone($config['lastSync']['timezone'])
31
        );
32
33 1
        return new SyncOptions($config);
34
    }
35
}
36