Completed
Pull Request — master (#292)
by Carlos
05:19 queued 02:03
created

Transformer::transform()   A

Complexity

Conditions 4
Paths 6

Size

Total Lines 16
Code Lines 9

Duplication

Lines 16
Ratio 100 %

Code Coverage

Tests 10
CRAP Score 4

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 16
loc 16
ccs 10
cts 10
cp 1
rs 9.2
cc 4
eloc 9
nc 6
nop 1
crap 4
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\Server;
22
23
use EasyWeChat\Message\AbstractMessage;
24
use EasyWeChat\Message\News;
25
use EasyWeChat\Message\Text;
26
27
/**
28
 * Class Transformer.
29
 */
30
class Transformer
31
{
32
    /**
33
     * transform message to XML.
34
     *
35
     * @param array|string|AbstractMessage $message
36
     *
37
     * @return array
38
     */
39 10 View Code Duplication
    public function transform($message)
40
    {
41 10
        if (is_array($message)) {
42 1
            $class = News::class;
43 1
        } else {
44 10
            if (is_string($message)) {
45 1
                $message = new Text(['content' => $message]);
46 1
            }
47
48 10
            $class = get_class($message);
49
        }
50
51 10
        $handle = 'transform'.substr($class, strlen('EasyWeChat\Message\\'));
52
53 10
        return method_exists($this, $handle) ? $this->$handle($message) : [];
54
    }
55
56
    /**
57
     * Transform text message.
58
     *
59
     * @return array
60
     */
61 5
    public function transformText(AbstractMessage $message)
62
    {
63
        return [
64 5
                'Content' => $message->get('content'),
65 5
               ];
66
    }
67
68
    /**
69
     * Transform image message.
70
     *
71
     * @return array
72
     */
73 1
    public function transformImage(AbstractMessage $message)
74
    {
75
        return [
76
                'Image' => [
77 1
                            'MediaId' => $message->get('media_id'),
78 1
                           ],
79 1
               ];
80
    }
81
82
    /**
83
     * Transform video message.
84
     *
85
     * @return array
86
     */
87 1
    public function transformVideo(AbstractMessage $message)
88
    {
89
        $response = [
90
                     'Video' => [
91 1
                                 'MediaId' => $message->get('media_id'),
92 1
                                 'Title' => $message->get('title'),
93 1
                                 'Description' => $message->get('description'),
94 1
                                ],
95 1
                    ];
96
97 1
        return $response;
98
    }
99
100
    /**
101
     * Transform voice message.
102
     *
103
     * @return array
104
     */
105 1
    public function transformVoice(AbstractMessage $message)
106
    {
107
        return [
108
                'Voice' => [
109 1
                            'MediaId' => $message->get('media_id'),
110 1
                           ],
111 1
               ];
112
    }
113
114
    /**
115
     * Transform transfer message.
116
     *
117
     * @return array
118
     */
119 1
    public function transformTransfer(AbstractMessage $message)
120
    {
121 1
        $response = [];
122
123
        // 指定客服
124 1
        if ($message->get('account')) {
125 1
            $response['TransInfo'] = [
126 1
                                      'KfAccount' => $message->get('account'),
127
                                     ];
128 1
        }
129
130 1
        return $response;
131
    }
132
133
    /**
134
     * Transform news message.
135
     *
136
     * @param array|EasyWeChat\Message\News $news
137
     *
138
     * @return array
139
     */
140 1 View Code Duplication
    public function transformNews($news)
141
    {
142 1
        $articles = [];
143
144 1
        if (!is_array($news)) {
145 1
            $news = [$news];
146 1
        }
147
148 1
        foreach ($news as $item) {
149 1
            $articles[] = [
150 1
                           'Title' => $item->get('title'),
151 1
                           'Description' => $item->get('description'),
152 1
                           'Url' => $item->get('url'),
153 1
                           'PicUrl' => $item->get('pic_url'),
154
                          ];
155 1
        }
156
157
        return [
158 1
                'ArticleCount' => count($articles),
159 1
                'Articles' => $articles,
160 1
               ];
161
    }
162
}
163