Hotmart::getProduct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 6
rs 10
1
<?php
2
/**
3
 * Class Hotmart
4
 * @package Wesleydeveloper\Hotmart
5
 * @author Wesley Silva <[email protected]>
6
 */
7
8
9
namespace Wesleydeveloper\Hotmart;
10
11
12
use GuzzleHttp\Client;
13
use Wesleydeveloper\Hotmart\Support\Connect;
14
15
class Hotmart extends Connect
16
{
17
    private const BASE_URI = 'https://api-hot-connect.hotmart.com/';
18
19
    private $client;
20
21
    private $params;
22
23
    public function __construct($config = null)
24
    {
25
        parent::__construct($config);
26
        $this->params = ['headers' => ['Authorization' => "Bearer {$this->getConfig()->getAccessToken()}"]];
27
        $this->client = new Client(['base_uri' => self::BASE_URI]);
28
    }
29
30
    // Report
31
32
    /**
33
     * Required parameters: startDate, endDate.
34
     * Optional parameters: productId, statusType, email, transaction, transactionStatus, buyerName, cpf, salesNature, paymentEngine, showNotAccessed, paymentType, source, affiliateName, offerKey, orderBy, format page and rows.
35
     * @param array|null $params
36
     * @return mixed
37
     */
38
    public function getHistory(array $params)
39
    {
40
        $keys = ['startDate', 'endDate'];
41
        $params = array_filter($params);
42
        foreach ($keys as $key) {
43
            if (! array_key_exists($key, $params)) {
44
                throw new InvalidArgumentException("Missing configuration key [$key].");
0 ignored issues
show
Bug introduced by
The type Wesleydeveloper\Hotmart\InvalidArgumentException was not found. Did you mean InvalidArgumentException? If so, make sure to prefix the type with \.
Loading history...
45
            }
46
        }
47
        $this->params['query'] = $params;
48
        $request = $this->client->get('/reports/rest/v2/history', $this->params);
49
        $response = json_decode($request->getBody()->getContents(), true);
50
51
        return $response;
52
    }
53
54
    /**
55
     * Required parameters: startDate, endDate and transactionStatus.
56
     * Optional parameters: productId, buyerEmail, transaction, page and rows.
57
     * @param array $params
58
     * @return mixed
59
     */
60
    public function getPurchaseDetails(array $params)
61
    {
62
        $keys = ['startDate', 'endDate', 'transactionStatus'];
63
        $params = array_filter($params);
64
        foreach ($keys as $key) {
65
            if (! array_key_exists($key, $params)) {
66
                throw new InvalidArgumentException("Missing configuration key [$key].");
67
            }
68
        }
69
        $this->params['query'] = $params;
70
        $request = $this->client->get('/reports/rest/v2/purchaseDetails', $this->params);
71
        $response = json_decode($request->getBody()->getContents(), true);
72
73
        return $response;
74
    }
75
76
    // Affiliation
77
78
    /**
79
     * @return mixed
80
     */
81
    public function getHotlinks()
82
    {
83
        $request = $this->client->get('/affiliation/rest/v2/', $this->params);
84
        $response = json_decode($request->getBody()->getContents(), true);
85
86
        return $response;
87
    }
88
89
    // Product
90
91
    /**
92
     * @param int $productId
93
     * @return mixed
94
     */
95
    public function getProduct(int $productId)
96
    {
97
        $request = $this->client->get("/product/rest/v2/{$productId}", $this->params);
98
        $response = json_decode($request->getBody()->getContents(), true);
99
100
        return $response;
101
    }
102
103
    /**
104
     * @param int $productId
105
     * @return mixed
106
     */
107
    public function getOffersOfProduct(int $productId)
108
    {
109
        $request = $this->client->get("/product/rest/v2/{$productId}/offers/", $this->params);
110
        $response = json_decode($request->getBody()->getContents(), true);
111
112
        return $response;
113
    }
114
115
    // Subscription
116
117
    /**
118
     * Optional parameters: page and rows.
119
     * @param array|null $params
120
     * @return mixed
121
     */
122
    public function getSubscription(array $params = null, bool $var)
0 ignored issues
show
Unused Code introduced by
The parameter $var is not used and could be removed. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-unused  annotation

122
    public function getSubscription(array $params = null, /** @scrutinizer ignore-unused */ bool $var)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
123
    {
124
        if (is_array($params)) {
125
            $params = array_filter($params);
126
            $this->params['query'] = $params;
127
        }
128
        $request = $this->client->get('/subscriber/rest/v2', $this->params);
129
        $response = json_decode($request->getBody()->getContents(), true);
130
131
        return $response;
132
    }
133
134
    // User
135
136
    /**
137
     * Optional parameters: id and ucode.
138
     * @param array|null $params
139
     * @return mixed
140
     */
141
    public function getUser(array $params = null)
142
    {
143
        if (is_array($params)) {
144
            $params = array_filter($params);
145
            $this->params['query'] = $params;
146
        }
147
        $request = $this->client->get('/user/rest/v2', $this->params);
148
        $response = json_decode($request->getBody()->getContents(), true);
149
150
        return $response;
151
    }
152
153
    /**
154
     * @return mixed
155
     */
156
    public function getLoggedUser()
157
    {
158
        $request = $this->client->get('/user/rest/v2/me', $this->params);
159
        $response = json_decode($request->getBody()->getContents(), true);
160
161
        return $response;
162
    }
163
}