Client::create()   A
last analyzed

Complexity

Conditions 3
Paths 1

Size

Total Lines 28
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 13
c 1
b 0
f 0
nc 1
nop 11
dl 0
loc 28
ccs 0
cts 13
cp 0
crap 12
rs 9.8333

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
namespace EasyIM\TencentIM\Group;
4
5
use EasyIM\Kernel\BaseClient;
6
use EasyIM\Kernel\Exceptions\InvalidConfigException;
7
use EasyIM\Kernel\ParameterList;
8
use EasyIM\Kernel\Support\Arr;
9
use EasyIM\Kernel\Support\Collection;
10
use EasyIM\TencentIM\Kernel\Constant\GroupConstant;
11
use GuzzleHttp\Exception\GuzzleException;
12
use Psr\Http\Message\ResponseInterface;
13
14
/**
15
 * Class Client
16
 *
17
 * @package EasyIM\TencentIM\Group
18
 * @author  yingzhan <[email protected]>
19
 *
20
 */
21
class Client extends BaseClient
22
{
23
    /**
24
     * Create Group.
25
     *
26
     * @param string             $name
27
     * @param string|null        $introduction
28
     * @param string|null        $notification
29
     * @param string|null        $faceUrl
30
     * @param string             $type
31
     * @param string|null        $ownerAccount
32
     * @param string|null        $groupId
33
     * @param int|null           $maxMemberCount
34
     * @param string             $applyJoinOption
35
     * @param ParameterList|null $memberList     ... MemberListParameter
36
     * @param ParameterList|null $appDefinedData ...CommonParameter
37
     *
38
     * @return array|Collection|object|ResponseInterface|string
39
     * @throws GuzzleException
40
     * @throws InvalidConfigException
41
     */
42
    public function create(
43
        string $name,
44
        string $introduction = null,
45
        string $notification = null,
46
        string $faceUrl = null,
47
        string $type = GroupConstant::PUBLIC,
48
        string $ownerAccount = null,
49
        int $maxMemberCount = null,
50
        ParameterList $memberList = null,
51
        ParameterList $appDefinedData = null,
52
        string $applyJoinOption = GroupConstant::FREE_ACCESS,
53
        string $groupId = null
54
    ) {
55
        $params = [
56
            'Type' => $type,
57
            'Name' => $name
58
        ];
59
        Arr::setNotNullValue($params, 'Owner_Account', $ownerAccount);
60
        Arr::setNotNullValue($params, 'MemberList', $memberList && $memberList());
61
        Arr::setNotNullValue($params, 'Notification', $notification);
62
        Arr::setNotNullValue($params, 'Introduction', $introduction);
63
        Arr::setNotNullValue($params, 'FaceUrl', $faceUrl);
64
        Arr::setNotNullValue($params, 'GroupId', $groupId);
65
        Arr::setNotNullValue($params, 'MaxMemberCount', $maxMemberCount);
66
        Arr::setNotNullValue($params, 'ApplyJoinOption', $applyJoinOption);
67
        Arr::setNotNullValue($params, 'AppDefinedData', $appDefinedData && $appDefinedData());
68
69
        return $this->httpPostJson('group_open_http_svc/create_group', $params);
70
    }
71
72
    /**
73
     * Get group details.
74
     *
75
     * @param array      $groupIds
76
     * @param array|null $groupBaseInfoFilter
77
     * @param array|null $memberInfoFilter
78
     * @param array|null $appDefinedDataFilterGroup
79
     * @param array|null $appDefinedDataFilterGroupMember
80
     *
81
     * @return array|Collection|object|ResponseInterface|string
82
     * @throws GuzzleException
83
     * @throws InvalidConfigException
84
     */
85
    public function get(
86
        array $groupIds,
87
        array $groupBaseInfoFilter = null,
88
        array $memberInfoFilter = null,
89
        array $appDefinedDataFilterGroup = null,
90
        array $appDefinedDataFilterGroupMember = null
91
    ) {
92
        $params['GroupIdList'] = $groupIds;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$params was never initialized. Although not strictly required by PHP, it is generally a good practice to add $params = array(); before regardless.
Loading history...
93
        Arr::setNotNullValue($params, 'ResponseFilter.GroupBaseInfoFilter', $groupBaseInfoFilter);
94
        Arr::setNotNullValue($params, 'ResponseFilter.MemberInfoFilter', $memberInfoFilter);
95
        Arr::setNotNullValue($params, 'ResponseFilter.AppDefinedDataFilter_Group', $appDefinedDataFilterGroup);
96
        Arr::setNotNullValue(
97
            $params,
98
            'ResponseFilter.AppDefinedDataFilter_GroupMember',
99
            $appDefinedDataFilterGroupMember
100
        );
101
102
        return $this->httpPostJson('group_open_http_svc/get_group_info', $params);
103
    }
104
105
106
    /**
107
     * Modify group basic data.
108
     *
109
     * @param string             $groupId
110
     * @param string|null        $name
111
     * @param string|null        $introduction
112
     * @param string|null        $notification
113
     * @param string|null        $faceUrl
114
     * @param int|null           $maxMemberNum
115
     * @param string             $applyJoinOption
116
     * @param ParameterList|null $appDefinedData ...CommonParameter
117
     * @param string|null        $shutUpAll
118
     *
119
     * @return array|Collection|object|ResponseInterface|string
120
     * @throws GuzzleException
121
     * @throws InvalidConfigException
122
     */
123
    public function modify(
124
        string $groupId,
125
        string $name = null,
126
        string $introduction = null,
127
        string $notification = null,
128
        string $faceUrl = null,
129
        int $maxMemberNum = null,
130
        string $shutUpAll = null,
131
        string $applyJoinOption = GroupConstant::FREE_ACCESS,
132
        ParameterList $appDefinedData = null
133
    ) {
134
        $params['GroupId'] = $groupId;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$params was never initialized. Although not strictly required by PHP, it is generally a good practice to add $params = array(); before regardless.
Loading history...
135
        Arr::setNotNullValue($params, 'Name', $name);
136
        Arr::setNotNullValue($params, 'Introduction', $introduction);
137
        Arr::setNotNullValue($params, 'Notification', $notification);
138
        Arr::setNotNullValue($params, 'FaceUrl', $faceUrl);
139
        Arr::setNotNullValue($params, 'MaxMemberNum', $maxMemberNum);
140
        Arr::setNotNullValue($params, 'ApplyJoinOption', $applyJoinOption);
141
        Arr::setNotNullValue($params, 'AppDefinedData', $appDefinedData && $appDefinedData());
142
        Arr::setNotNullValue($params, 'ShutUpAllMember', $shutUpAll);
143
144
        return $this->httpPostJson('group_open_http_svc/modify_group_base_info', $params);
145
    }
146
147
    /**
148
     * Disband group.
149
     *
150
     * @param string $groupId
151
     *
152
     * @return array|Collection|object|ResponseInterface|string
153
     * @throws InvalidConfigException
154
     * @throws GuzzleException
155
     */
156
    public function destroy(string $groupId)
157
    {
158
        $params = [
159
            'GroupId' => $groupId
160
        ];
161
162
        return $this->httpPostJson('group_open_http_svc/destroy_group', $params);
163
    }
164
}
165