Completed
Pull Request — master (#590)
by
unknown
03:20
created

Transformer::transformVoice()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 4
nc 1
nop 1
dl 0
loc 8
ccs 2
cts 2
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
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
 * @see      https://github.com/overtrue
19
 * @see      http://overtrue.me
20
 */
21
22
namespace EasyWeChat\Server;
23
24
use EasyWeChat\Message\AbstractMessage;
25
use EasyWeChat\Message\News;
26
use EasyWeChat\Message\Text;
27
28
/**
29
 * Class Transformer.
30
 */
31
class Transformer
32
{
33
    /**
34
     * transform message to XML.
35
     *
36
     * @param array|string|AbstractMessage $message
37
     *
38
     * @return array
39
     */
40 10 View Code Duplication
    public function transform($message)
41
    {
42 10
        if (is_array($message)) {
43 1
            $class = News::class;
44
        } else {
45 10
            if (is_string($message)) {
46 1
                $message = new Text(['content' => $message]);
47
            }
48
49 10
            $class = get_class($message);
50
        }
51
52 10
        $handle = 'transform'.substr($class, strlen('EasyWeChat\Message\\'));
53
54 10
        return method_exists($this, $handle) ? $this->$handle($message) : [];
55
    }
56
57
    /**
58
     * Transform text message.
59
     *
60
     * @return array
61
     */
62 5
    public function transformText(AbstractMessage $message)
63
    {
64
        return [
65 5
                'Content' => $message->get('content'),
66
               ];
67
    }
68
69
    /**
70
     * Transform image message.
71
     *
72
     * @return array
73
     */
74 1
    public function transformImage(AbstractMessage $message)
75
    {
76
        return [
77
                'Image' => [
78 1
                            'MediaId' => $message->get('media_id'),
79
                           ],
80
               ];
81
    }
82
83
    /**
84
     * Transform video message.
85
     *
86
     * @return array
87
     */
88 1
    public function transformVideo(AbstractMessage $message)
89
    {
90
        $response = [
91
                     'Video' => [
92 1
                                 'MediaId' => $message->get('media_id'),
93 1
                                 'Title' => $message->get('title'),
94 1
                                 'Description' => $message->get('description'),
95
                                ],
96
                    ];
97
98 1
        return $response;
99
    }
100
101
    /**
102
     * Transform music message.
103
     *
104
     * @return array
105
     */
106
    public function transformMusic(AbstractMessage $message)
107
    {
108
        $response = [
109
                        'Music' => [
110
                            'Title' => $message->get('title'),
111
                            'Description' => $message->get('description'),
112
                            'MusicUrl' => $message->get('url'),
113
                            'HQMusicUrl' => $message->get('hq_url'),
114
                            'ThumbMediaId' => $message->get('thumb_media_id'),
115
                        ],
116
                    ];
117
118
        return $response;
119
    }
120
121
    /**
122
     * Transform voice message.
123
     *
124
     * @return array
125
     */
126 1
    public function transformVoice(AbstractMessage $message)
127
    {
128
        return [
129
                'Voice' => [
130 1
                            'MediaId' => $message->get('media_id'),
131
                           ],
132
               ];
133
    }
134
135
    /**
136
     * Transform transfer message.
137
     *
138
     * @return array
139
     */
140 1
    public function transformTransfer(AbstractMessage $message)
141
    {
142 1
        $response = [];
143
144
        // 指定客服
145 1
        if ($message->get('account')) {
146 1
            $response['TransInfo'] = [
147 1
                                      'KfAccount' => $message->get('account'),
148
                                     ];
149
        }
150
151 1
        return $response;
152
    }
153
154
    /**
155
     * Transform news message.
156
     *
157
     * @param array|\EasyWeChat\Message\News $news
158
     *
159
     * @return array
160
     */
161 1 View Code Duplication
    public function transformNews($news)
162
    {
163 1
        $articles = [];
164
165 1
        if (!is_array($news)) {
166 1
            $news = [$news];
167
        }
168
169 1
        foreach ($news as $item) {
170 1
            $articles[] = [
171 1
                           'Title' => $item->get('title'),
172 1
                           'Description' => $item->get('description'),
173 1
                           'Url' => $item->get('url'),
174 1
                           'PicUrl' => $item->get('pic_url'),
175
                          ];
176
        }
177
178
        return [
179 1
                'ArticleCount' => count($articles),
180 1
                'Articles' => $articles,
181
               ];
182
    }
183
184
    public function transformDeviceText(AbstractMessage $message)
185
    {
186
        $response = [
187
                        'DeviceType' => $message->get('device_type'),
188
                        'DeviceID' => $message->get('device_id'),
189
                        'SessionID' => $message->get('session_id'),
190
                        'Content' => base64_encode($message->get('content')),
191
                    ];
192
193
        return $response;
194
    }
195
}
196