Passed
Push — master ( 1a9785...6059b7 )
by Andrés
02:30
created

Client::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 0
cts 6
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 3
crap 2
1
<?php
2
3
namespace Andreshg112\HablameSms;
4
5
use GuzzleHttp\Client as GuzzleClient;
6
7
class Client
8
{
9
    /** @var string $api Clave API suministrada por Háblame SMS. */
10
    protected $api = null;
11
12
    /** @var string $client Número del cliente en Háblame SMS. */
13
    protected $client = null;
14
15
    /** @var GuzzleClient $http Cliente de Guzzle. */
16
    protected $http = null;
17
18
    /**
19
     * Crea una instancia recibiendo el número del cliente y la clave.
20
     *
21
     * @param string $client
22
     * @param string $api
23
     * @param GuzzleClient $http
24
     */
25
    public function __construct(string $client, string $api, GuzzleClient $http = null)
26
    {
27
        $this->client = $client;
28
29
        $this->api = $api;
30
31
        $this->http = $http ?? new GuzzleClient();
32
    }
33
34
    /**
35
     * Consulta el saldo.
36
     *
37
     * @return array
38
     */
39
    public function checkBalance()
40
    {
41
        $url = 'https://api.hablame.co/saldo/consulta/index.php';
42
43
        $params = ['cliente' => $this->client, 'api' => $this->api];
44
45
        $response = $this->http->post($url, ['form_params' => $params]);
46
47
        return json_decode((string)$response->getBody(), true);
48
    }
49
50
    /**
51
     * Envía un mensaje de texto (SMS) al destinatario o destinatarios indicados.
52
     *
53
     * @param int|string $phoneNumbers Número(s) telefonicos a enviar SMS (separados por una coma).
54
     * @param string $sms Mensaje de texto a enviar.
55
     * @param string $reference [optional] Numero de referencia o nombre de campaña.
56
     * @return array
57
     */
58
    public function sendMessage($phoneNumbers, $sms, $reference = null)
59
    {
60
        $url = 'https://api.hablame.co/sms/envio';
61
62
        $params = [
63
            'cliente' => $this->client,
64
            'api' => $this->api,
65
            'numero' => $phoneNumbers,
66
            'sms' => $sms,
67
            'referencia' => $reference,
68
        ];
69
70
        $response = $this->http->post($url, ['form_params' => $params]);
71
72
        return json_decode((string)$response->getBody(), true);
73
    }
74
}
75