1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Tylercd100\Monolog\Handler; |
4
|
|
|
|
5
|
|
|
use Exception; |
6
|
|
|
use Monolog\Logger; |
7
|
|
|
|
8
|
|
|
/** |
9
|
|
|
* Plivo - Monolog Handler |
10
|
|
|
* @url https://www.plivo.com/docs/api/message/ |
11
|
|
|
*/ |
12
|
|
View Code Duplication |
class PlivoHandler extends SMSHandler |
|
|
|
|
13
|
|
|
{ |
14
|
|
|
/** |
15
|
|
|
* API version 1 |
16
|
|
|
*/ |
17
|
|
|
const API_V1 = 'v1'; |
18
|
|
|
|
19
|
|
|
/** |
20
|
|
|
* @param string $authToken Plivo API Auth Token |
21
|
|
|
* @param string $authId Plivo API Auth ID |
22
|
|
|
* @param string $fromNumber The phone number that will be shown as the sender ID |
23
|
|
|
* @param string $toNumber The phone number to which the message will be sent |
24
|
|
|
* @param int $level The minimum logging level at which this handler will be triggered |
25
|
|
|
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not |
26
|
|
|
* @param bool $useSSL Whether to connect via SSL. |
27
|
|
|
* @param string $host The Plivo server hostname. |
28
|
|
|
* @param string $version The Plivo API version (default PlivoHandler::API_V1) |
29
|
|
|
* @param int $limit The character limit |
30
|
|
|
*/ |
31
|
18 |
|
public function __construct($authToken, $authId, $fromNumber, $toNumber, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $host = 'api.plivo.com', $version = self::API_V1, $limit = 160) |
32
|
|
|
{ |
33
|
18 |
|
if ($version !== self::API_V1) { |
34
|
3 |
|
throw new Exception('API Version \'{$version}\' is not supported!'); |
35
|
|
|
} |
36
|
15 |
|
parent::__construct($authToken, $authId, $fromNumber, $toNumber, $level, $bubble, $useSSL, $host, $version, $limit); |
37
|
15 |
|
} |
38
|
|
|
/** |
39
|
|
|
* {@inheritdoc} |
40
|
|
|
* |
41
|
|
|
* @param array $record |
42
|
|
|
* @return string |
43
|
|
|
*/ |
44
|
12 |
|
protected function buildContent($record) |
45
|
|
|
{ |
46
|
12 |
|
if (strlen($record['formatted']) > $this->limit) { |
47
|
|
|
$record['formatted'] = substr($record['formatted'], 0, $this->limit); |
48
|
|
|
} |
49
|
|
|
|
50
|
|
|
$dataArray = array( |
51
|
12 |
|
'src' => $this->fromNumber, |
52
|
12 |
|
'dst' => $this->toNumber, |
53
|
12 |
|
'text' => $record['formatted'], |
54
|
12 |
|
); |
55
|
12 |
|
return json_encode($dataArray); |
56
|
|
|
} |
57
|
|
|
|
58
|
|
|
/** |
59
|
|
|
* Builds the URL for the API call |
60
|
|
|
* |
61
|
|
|
* @return string |
62
|
|
|
*/ |
63
|
12 |
|
protected function buildRequestUrl() |
64
|
|
|
{ |
65
|
12 |
|
return "POST /{$this->version}/Account/{$this->authId}/Message/ HTTP/1.1\r\n"; |
66
|
|
|
} |
67
|
|
|
} |
68
|
|
|
|
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.