MessariClient::__construct()   A
last analyzed

Complexity

Conditions 2
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 2
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 2
nc 1
nop 1
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Codenixsv\MessariApi;
6
7
use Codenixsv\ApiClient\BaseClient;
8
use Codenixsv\ApiClient\BaseClientInterface;
9
use Codenixsv\MessariApi\Api\Assets;
10
use Codenixsv\MessariApi\Api\Markets;
11
use Codenixsv\MessariApi\Api\News;
12
13
/**
14
 * Class MessariClient
15
 * @package Codenixsv\MessariApi
16
 */
17
class MessariClient
18
{
19
    protected const BASE_URI = 'https://data.messari.io/api/v1';
20
21
    /** @var BaseClientInterface */
22
    private $baseClient;
23
24
    /**
25
     * MessariClient constructor.
26
     * @param BaseClientInterface|null $baseClient
27
     */
28 20
    public function __construct(?BaseClientInterface $baseClient = null)
29
    {
30 20
        $this->baseClient = $baseClient ?: new BaseClient();
31 20
        $this->baseClient->setBaseUri($this->getBaseUri());
32 20
    }
33
34
    /**
35
     * @return BaseClientInterface
36
     */
37 17
    public function getBaseClient(): BaseClientInterface
38
    {
39 17
        return $this->baseClient;
40
    }
41
42
    /**
43
     * @return Assets
44
     */
45 1
    public function assets(): Assets
46
    {
47 1
        return new Assets($this);
48
    }
49
50
    /**
51
     * @return Markets
52
     */
53 1
    public function markets(): Markets
54
    {
55 1
        return new Markets($this);
56
    }
57
58
    /**
59
     * @return News
60
     */
61 1
    public function news(): News
62
    {
63 1
        return new News($this);
64
    }
65
66
    /**
67
     * @return string
68
     */
69 20
    private function getBaseUri(): string
70
    {
71 20
        return self::BASE_URI;
72
    }
73
}
74