GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( d0189b...d9db37 )
by Atymic
09:52 queued 44s
created

TwilioChannel::send()   A

Complexity

Conditions 5
Paths 20

Size

Total Lines 33

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 18
CRAP Score 5.0035

Importance

Changes 0
Metric Value
dl 0
loc 33
ccs 18
cts 19
cp 0.9474
rs 9.0808
c 0
b 0
f 0
cc 5
nc 20
nop 2
crap 5.0035
1
<?php
2
3
namespace NotificationChannels\Twilio;
4
5
use Exception;
6
use Illuminate\Contracts\Events\Dispatcher;
7
use Illuminate\Notifications\Events\NotificationFailed;
8
use Illuminate\Notifications\Notification;
9
use NotificationChannels\Twilio\Exceptions\CouldNotSendNotification;
10
11
class TwilioChannel
12
{
13
    /**
14
     * @var Twilio
15
     */
16
    protected $twilio;
17
18
    /**
19
     * @var Dispatcher
20
     */
21
    protected $events;
22
23
    /**
24
     * TwilioChannel constructor.
25
     *
26
     * @param Twilio $twilio
27
     * @param Dispatcher $events
28
     */
29 13
    public function __construct(Twilio $twilio, Dispatcher $events)
30
    {
31 13
        $this->twilio = $twilio;
32 13
        $this->events = $events;
33 13
    }
34
35
    /**
36
     * Send the given notification.
37
     *
38
     * @param mixed $notifiable
39
     * @param Notification $notification
40
     *
41
     * @return mixed
42
     * @throws Exception
43
     */
44 13
    public function send($notifiable, Notification $notification)
45
    {
46
        try {
47 13
            $to = $this->getTo($notifiable);
48 12
            $message = $notification->toTwilio($notifiable);
0 ignored issues
show
Bug introduced by
The method toTwilio() does not seem to exist on object<Illuminate\Notifications\Notification>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
49 12
            $useSender = $this->canReceiveAlphanumericSender($notifiable);
50
51 12
            if (is_string($message)) {
52 4
                $message = new TwilioSmsMessage($message);
53
            }
54
55 12
            if (! $message instanceof TwilioMessage) {
56 1
                throw CouldNotSendNotification::invalidMessageObject($message);
57
            }
58
59 11
            return $this->twilio->sendMessage($message, $to, $useSender);
60 5
        } catch (Exception $exception) {
61 5
            $event = new NotificationFailed(
62 5
                $notifiable,
63
                $notification,
64 5
                'twilio',
65 5
                ['message' => $exception->getMessage(), 'exception' => $exception]
66
            );
67
68 5
            $this->events->dispatch($event);
69
70
            if ($this->twilio->config->isIgnoredErrorCode($exception->getCode())) {
71 5
                return;
72
            }
73
74 5
            throw $exception;
75 2
        }
76
    }
77
78 3
    /**
79
     * Get the address to send a notification to.
80
     *
81
     * @param mixed $notifiable
82
     *
83
     * @return mixed
84
     * @throws CouldNotSendNotification
85
     */
86
    protected function getTo($notifiable)
87
    {
88
        if ($notifiable->routeNotificationFor('twilio')) {
89
            return $notifiable->routeNotificationFor('twilio');
90 13
        }
91
        if (isset($notifiable->phone_number)) {
92 13
            return $notifiable->phone_number;
93 1
        }
94
95 12
        throw CouldNotSendNotification::invalidReceiver();
96 11
    }
97
98
    /**
99 1
     * Get the alphanumeric sender.
100
     *
101
     * @param $notifiable
102
     *
103
     * @return mixed|null
104
     * @throws CouldNotSendNotification
105
     */
106
    protected function canReceiveAlphanumericSender($notifiable)
107
    {
108
        return method_exists($notifiable, 'canReceiveAlphanumericSender') &&
109
            $notifiable->canReceiveAlphanumericSender();
110 12
    }
111
}
112