Completed
Push — master ( 5309e4...b64411 )
by Frederick
12s
created

StatFetcher   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getDownloadsLastDay() 0 13 1
A __construct() 0 4 1
1
<?php
2
3
namespace Vanbrabantf\NpmStatFetcher;
4
5
6
use Cake\Chronos\Chronos;
7
use Vanbrabantf\NpmStatFetcher\Repositories\NpmRegistryRepository;
8
use Vanbrabantf\NpmStatFetcher\ValueObjects\DownloadStatistics;
9
use Vanbrabantf\NpmStatFetcher\ValueObjects\Package;
10
11
class StatFetcher
12
{
13
    /**
14
     * @var Package
15
     */
16
    private $package;
17
18
    /**
19
     * @var NpmRegistryRepository
20
     */
21
    private $repository;
22
23
    /**
24
     * @param Package $package
25
     * @param NpmRegistryRepository $repository
26
     */
27
    public function __construct(Package $package, NpmRegistryRepository $repository)
28
    {
29
        $this->package = $package;
30
        $this->repository = $repository;
31
    }
32
33
    /**
34
     * @return DownloadStatistics
35
     */
36
    public function getDownloadsLastDay()
37
    {
38
        $resource = $this->repository->getResourceByPath(
39
            '/downloads/point/last-day/' . $this->package
40
        );
41
42
        $resourceArray = json_decode($resource);
43
44
        return new DownloadStatistics(
45
            $this->package,
46
            $resourceArray->downloads,
47
            new Chronos($resourceArray->start),
48
            new Chronos($resourceArray->end)
49
        );
50
    }
51
}