Completed
Pull Request — master (#4)
by Peter
02:41 queued 32s
created

Client::getTeams()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 8
ccs 5
cts 5
cp 1
rs 9.4285
cc 1
eloc 5
nc 1
nop 1
crap 1
1
<?php
2
3
namespace PtrTn\Battlerite;
4
5
use GuzzleHttp\Client as GuzzleClient;
6
use PtrTn\Battlerite\Dto\Match\DetailedMatch;
7
use PtrTn\Battlerite\Dto\Matches\Matches;
8
use PtrTn\Battlerite\Dto\Player\DetailedPlayer;
9
use PtrTn\Battlerite\Dto\Players\Players;
10
use PtrTn\Battlerite\Dto\Status\Status;
11
use PtrTn\Battlerite\Dto\Teams\Teams;
12
use PtrTn\Battlerite\Query\Matches\MatchesQuery;
13
use PtrTn\Battlerite\Query\Players\PlayersQuery;
14
use PtrTn\Battlerite\Query\Teams\TeamsQuery;
15
16
class Client
17
{
18
    /**
19
     * @var ApiClient
20
     */
21
    private $apiClient;
22
23 17
    public function __construct(ApiClient $apiClient)
24
    {
25 17
        $this->apiClient = $apiClient;
26 17
    }
27
28
    /**
29
     * Create default API client setup
30
     */
31 1
    public static function create(string $apiKey): self
32
    {
33 1
        return new self(
34 1
            new ApiClient(
35 1
                $apiKey,
36 1
                new GuzzleClient()
37
            )
38
        );
39
    }
40
41 2
    public function getStatus(): Status
42
    {
43 2
        $responseData = $this->apiClient->sendRequestToEndPoint(
44 2
            '/status'
45
        );
46 2
        return Status::createFromArray($responseData['data']);
47
    }
48
49 4
    public function getMatches(MatchesQuery $query = null): Matches
50
    {
51 4
        $responseData = $this->apiClient->sendRequestToEndPoint(
52 4
            '/shards/global/matches',
53 4
            $query
54
        );
55 4
        return Matches::createFromArray($responseData['data']);
56
    }
57
58 2
    public function getMatch(string $matchId): DetailedMatch
59
    {
60 2
        $responseData = $this->apiClient->sendRequestToEndPoint(
61 2
            '/shards/global/matches/' . $matchId
62
        );
63 2
        return DetailedMatch::createFromArray($responseData);
64
    }
65
66 3
    public function getPlayers(PlayersQuery $query = null): Players
67
    {
68 3
        $responseData = $this->apiClient->sendRequestToEndPoint(
69 3
            '/shards/global/players',
70 3
            $query
71
        );
72 3
        return Players::createFromArray($responseData['data']);
73
    }
74
75 2
    public function getPlayer(string $playerId): DetailedPlayer
76
    {
77 2
        $responseData = $this->apiClient->sendRequestToEndPoint(
78 2
            '/shards/global/players/' . $playerId
79
        );
80 2
        return DetailedPlayer::createFromArray($responseData['data']);
81
    }
82
83 1
    public function getTeams(TeamsQuery $query = null): Teams
84
    {
85 1
        $responseData = $this->apiClient->sendRequestToEndPoint(
86 1
            '/shards/global/teams',
87 1
            $query
88
        );
89 1
        return Teams::createFromArray($responseData['data']);
90
    }
91
}
92