Completed
Pull Request — master (#292)
by Carlos
03:42
created

Transformer::transformNews()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 9
ccs 5
cts 5
cp 1
rs 9.6666
cc 1
eloc 5
nc 1
nop 1
crap 1
1
<?php
2
3
/*
4
 * This file is part of the overtrue/wechat.
5
 *
6
 * (c) overtrue <[email protected]>
7
 *
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
/**
13
 * Transformer.php.
14
 *
15
 * @author    overtrue <[email protected]>
16
 * @copyright 2015 overtrue <[email protected]>
17
 *
18
 * @link      https://github.com/overtrue
19
 * @link      http://overtrue.me
20
 */
21
namespace EasyWeChat\Broadcast;
22
23
use EasyWeChat\Core\Exceptions\InvalidArgumentException;
24
25
/**
26
 * Class Transformer.
27
 */
28
class Transformer
29
{
30
    /**
31
     * Message type.
32
     *
33
     * @var string
34
     */
35
    protected $msgType;
36
37
    /**
38
     * message.
39
     *
40
     * @var mixed
41
     */
42
    protected $message;
43
44
    /**
45
     * Transformer constructor.
46
     *
47
     * @param $msgType
48
     * @param $message
49
     */
50 12
    public function __construct($msgType, $message)
51
    {
52 12
        $this->msgType = $msgType;
53
54 12
        $this->message = $message;
55 12
    }
56
57
    /**
58
     * Transform message.
59
     *
60
     * @return array
61
     */
62 12
    public function transform()
63
    {
64 12
        $handle = sprintf('transform%s', ucfirst($this->msgType));
65
66 12
        return method_exists($this, $handle) ? $this->$handle($this->message) : [];
67
    }
68
69
    /**
70
     * Transform text message.
71
     *
72
     * @param string $message
73
     *
74
     * @return array
75
     */
76 5
    public function transformText($message)
77
    {
78
        return [
79
            'text' => [
80 5
                'content' => $message,
81 5
            ],
82 5
            'msgtype' => 'text',
83 5
        ];
84
    }
85
86
    /**
87
     * Transform news message.
88
     *
89
     * @param string $message
90
     *
91
     * @return array
92
     */
93 1
    public function transformNews($message)
94
    {
95
        return [
96
            'mpnews' => [
97 1
                'media_id' => $message,
98 1
            ],
99 1
            'msgtype' => 'mpnews',
100 1
        ];
101
    }
102
103
    /**
104
     * Transform image message.
105
     *
106
     * @param string $message
107
     *
108
     * @return array
109
     */
110 1
    public function transformImage($message)
111
    {
112
        return [
113
            'image' => [
114 1
                'media_id' => $message,
115 1
            ],
116 1
            'msgtype' => 'image',
117 1
        ];
118
    }
119
120
    /**
121
     * Transform video message.
122
     *
123
     * @param array $message
124
     *
125
     * @return array
126
     *
127
     * @throws InvalidArgumentException
128
     */
129 2
    public function transformVideo(array $message)
130
    {
131 2
        if (3 !== count($message)) {
132 1
            throw new InvalidArgumentException('send message to openids, the message must be three arguments.');
133
        }
134
135
        return [
136
            'video' => [
137 2
                'media_id' => $message[0],
138 2
                'title' => $message[1],
139 2
                'description' => $message[2],
140 2
            ],
141 2
            'msgtype' => 'video',
142 2
        ];
143
    }
144
145
    /**
146
     * Transform mpvideo message.
147
     *
148
     * @param string $message
149
     *
150
     * @return array
151
     */
152 2
    public function transformMpvideo($message)
153
    {
154
        return [
155
            'mpvideo' => [
156 2
                'media_id' => $message,
157 2
            ],
158 2
            'msgtype' => 'mpvideo',
159 2
        ];
160
    }
161
162
    /**
163
     * Transform voice message.
164
     *
165
     * @param string $message
166
     *
167
     * @return array
168
     */
169 1
    public function transformVoice($message)
170
    {
171
        return [
172
            'voice' => [
173 1
                'media_id' => $message,
174 1
            ],
175 1
            'msgtype' => 'voice',
176 1
        ];
177
    }
178
179
    /**
180
     * Transform card message.
181
     *
182
     * @param $message
183
     *
184
     * @return array
185
     */
186 1
    public function transformCard($message)
187
    {
188
        return [
189
            'wxcard' => [
190 1
                'card_id' => $message,
191 1
            ],
192 1
            'msgtype' => 'wxcard',
193 1
        ];
194
    }
195
}
196