Passed
Push — master ( 1828fb...5ac899 )
by Zing
06:56
created

YunpianGateway   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
eloc 13
c 0
b 0
f 0
dl 0
loc 35
ccs 14
cts 14
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getBaseUri() 0 3 1
A send() 0 17 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Zing\LaravelSms\Gateways;
6
7
use Overtrue\EasySms\Contracts\MessageInterface;
8
use Overtrue\EasySms\Contracts\PhoneNumberInterface;
9
use Overtrue\EasySms\Gateways\Gateway;
10
use Overtrue\EasySms\Support\Config;
11
use Overtrue\EasySms\Traits\HasHttpRequest;
12
use Zing\LaravelSms\Exceptions\CouldNotSendNotification;
13
14
class YunpianGateway extends Gateway
15
{
16 1
    use HasHttpRequest;
17
18 1
    public function getBaseUri()
19
    {
20 1
        return 'http://yunpian.com';
21
    }
22
23
    /**
24
     * @param \Overtrue\EasySms\Contracts\PhoneNumberInterface $to
25
     * @param \Overtrue\EasySms\Contracts\MessageInterface $message
26
     * @param \Overtrue\EasySms\Support\Config $config
27
     *
28
     * @throws \Zing\LaravelSms\Exceptions\CouldNotSendNotification
29
     *
30
     * @return array
31
     */
32 3
    public function send(PhoneNumberInterface $to, MessageInterface $message, Config $config)
33
    {
34 3
        $signature = $this->config->get('signature');
35 3
        $content = $message->getContent($this);
36 3
        $result = $this->post(
37 3
            '/v1/sms/send.json',
38
            [
39 3
                'apikey' => $this->config['api_key'],
40 3
                'mobile' => $to->getUniversalNumber(),
41 3
                'text' => strpos($content, '【') === 0 ? $content : $signature . $content,
42
            ]
43
        );
44 3
        if (data_get($result, 'code') === 0) {
45 3
            return $result;
46
        }
47
48 1
        throw new CouldNotSendNotification(data_get($result, 'msg'), data_get($result, 'code'), $result);
49
    }
50
}
51