SMSMessenger   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Test Coverage

Coverage 80%

Importance

Changes 0
Metric Value
eloc 25
dl 0
loc 72
ccs 16
cts 20
cp 0.8
rs 10
c 0
b 0
f 0
wmc 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A sendMessageWith() 0 21 3
A smsProviders() 0 3 1
A sendMessage() 0 22 3
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 1
    public function sendMessageWith(string $providerName, string $to, string $message)
18
    {
19
        $result = array(
20 1
            'provider' => $providerName,
21
            'result' => [
22
                'sent' => false
23
            ]
24
        );
25
26 1
        if (isset($this->smsProviders[$providerName])) {
27 1
            $provider = $this->smsProviders[$providerName];
28
29 1
            if (!$provider->isValid()) {
30
                $result['result']['error'] = 'Invalid credentials';
31
                return $result;
32
            }
33
34 1
            $result['result'] = $provider->send($to, $message);
35
        }
36
37 1
        return $result;
38
    }
39
40
    /**
41
     * Sends an sms message.
42
     *
43
     * @param string $to
44
     * @param string $message
45
     * @return array
46
     */
47 1
    public function sendMessage(string $to, string $message)
48
    {
49
        $result = array(
50 1
            'provider' => 'Empty providers',
51
            'result' => [
52
                'sent' => false
53
            ]
54
        );
55
56 1
        foreach ($this->smsProviders() as $name => $provider) {
57 1
            $result['provider'] = $name;
58
59 1
            if (!$provider->isValid()) {
60
                $result['result']['error'] = 'Invalid credentials';
61
            } else {
62 1
                $result['result'] = $provider->send($to, $message);
63
            }
64
65 1
            return $result;
66
        }
67
68
        return $result;
69
    }
70
71
    /**
72
     * Returns all sms providers.
73
     *
74
     * @return SMSProvider[]
75
     */
76 2
    public function smsProviders()
77
    {
78 2
        return $this->smsProviders;
79
    }
80
}