Passed
Push — master ( 12ecb2...6f4323 )
by Alan
15:45
created

SMSMessenger::smsProviders()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Messenger;
4
5
use Messenger\SMSProviders\SMSProvider;
6
7
class SMSMessenger extends Messenger
8
{
9
    /**
10
     * Sends an sms message with a given provider if they have been registered.
11
     *
12
     * @param string $providerName
13
     * @param string $to
14
     * @param string $message
15
     * @return array
16
     */
17
    public function sendMessageWith(string $providerName, string $to, string $message)
18
    {
19
        $result = array(
20
            'provider' => $providerName,
21
            'result' => [
22
                'sent' => false
23
            ]
24
        );
25
26
        if (isset($this->smsProviders[$providerName])) {
27
            $provider = $this->smsProviders[$providerName];
28
29
            if (!$provider->isValid()) {
30
                $result['result']['error'] = 'Invalid credentials';
31
                return $result;
32
            }
33
34
            $result['result'] = $provider->send($to, $message);
35
        }
36
37
        return $result;
38
    }
39
40
    /**
41
     * Sends an sms message.
42
     *
43
     * @param string $to
44
     * @param string $message
45
     * @return array
46
     */
47
    public function sendMessage(string $to, string $message)
48
    {
49
        $result = array(
50
            'provider' => 'Empty providers',
51
            'result' => [
52
                'sent' => false
53
            ]
54
        );
55
56
        foreach ($this->smsProviders() as $name => $provider) {
57
            $result['provider'] = $name;
58
59
            if (!$provider->isValid()) {
60
                $result['result']['error'] = 'Invalid credentials';
61
            } else {
62
                $result['result'] = $provider->send($to, $message);
63
            }
64
65
            return $result;
66
        }
67
68
        return $result;
69
    }
70
71
    /**
72
     * Returns all sms providers.
73
     *
74
     * @return SMSProvider[]
75
     */
76
    public function smsProviders()
77
    {
78
        return $this->smsProviders;
79
    }
80
}