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
Pull Request — master (#14)
by Casper
03:50 queued 01:56
created

TwilioChannel::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 6
ccs 0
cts 0
cp 0
rs 9.4285
cc 1
eloc 4
nc 1
nop 3
crap 2
1
<?php
2
3
namespace NotificationChannels\Twilio;
4
5
use Exception;
6
use Illuminate\Notifications\Notification;
7
use Illuminate\Contracts\Events\Dispatcher;
8
use NotificationChannels\Twilio\Exceptions\CouldNotSendNotification;
9
use Illuminate\Notifications\Events\NotificationFailed;
10
use Services_Twilio as Twilio;
11
12
class TwilioChannel
13
{
14
    /**
15
     * @var Twilio
16
     */
17
    protected $twilio;
18
19
    /**
20
     * @var Dispatcher
21
     */
22
    protected $events;
23
24
    /**
25
     * Default 'from' from config.
26
     * @var string
27
     */
28
    protected $from;
29
30
    /**
31
     * TwilioChannel constructor.
32
     *
33
     * @param Twilio  $twilio
34
     * @param Dispatcher  $events
35
     */
36
    public function __construct(Twilio $twilio, Dispatcher $events, $from)
37
    {
38
        $this->twilio = $twilio;
39
        $this->events = $events;
40
        $this->from = $from;
41
    }
42
43
    /**
44
     * Send the given notification.
45
     *
46
     * @param  mixed  $notifiable
47
     * @param  \Illuminate\Notifications\Notification  $notification
48
     * @return mixed
49
     * @throws CouldNotSendNotification
50
     */
51
    public function send($notifiable, Notification $notification)
52
    {
53
        if (! $to = $notifiable->routeNotificationFor('twilio')) {
54
            if (! $to = $notifiable->phone_number) {
55
                return;
56
            }
57
        }
58
59
        try {
60
            $message = $notification->toTwilio($notifiable);
61
62
            if (is_string($message)) {
63
                $message = new TwilioSmsMessage($message);
64
            }
65
66
            if (! $message instanceof TwilioMessage) {
67
                throw CouldNotSendNotification::invalidMessageObject($message);
68
            }
69
70
            return $this->sendMessage($message, $to);
71
        } catch (Exception $exception) {
72
            $this->events->fire(
73
                new NotificationFailed($notifiable, $notification, 'twilio', ['message' => $exception->getMessage()])
74
            );
75
        }
76
    }
77
78
    /**
79
     * Send message to Twilio.
80
     *
81
     * @param  TwilioMessage  $message
82
     * @param  string  $to
83
     * @return mixed
84
     *
85
     * @throws \NotificationChannels\Twilio\Exceptions\CouldNotSendNotification
86
     */
87
    protected function sendMessage(TwilioMessage $message, $to)
88
    {
89
        $from = $this->getFrom($message);
90
91
        if ($message instanceof TwilioSmsMessage) {
92
            return $this->twilio->account->messages->sendMessage(
93
                $from,
94
                $to,
95
                trim($message->content)
96
            );
97
        }
98
99
        if ($message instanceof TwilioCallMessage) {
100
            return $this->twilio->account->calls->create(
101
                $from,
102
                $to,
103
                trim($message->content)
104
            );
105
        }
106
107
        throw CouldNotSendNotification::invalidMessageObject($message);
108
    }
109
110
    protected function getFrom($message)
111
    {
112
        if (! $from = $message->from ?: $this->from) {
113
            throw CouldNotSendNotification::missingFrom();
114
        }
115
116
        return $from;
117
    }
118
}
119