Passed
Pull Request — master (#895)
by Songda
01:58
created

CloseShortcut::miniPlugins()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 11
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yansongda\Pay\Shortcut\Alipay;
6
7
use Yansongda\Pay\Contract\ShortcutInterface;
8
use Yansongda\Pay\Exception\Exception;
9
use Yansongda\Pay\Exception\InvalidParamsException;
10
use Yansongda\Pay\Plugin\Alipay\AddRadarPlugin;
11
use Yansongda\Pay\Plugin\Alipay\AddSignaturePlugin;
12
use Yansongda\Pay\Plugin\Alipay\FormatBizContentPlugin;
13
use Yansongda\Pay\Plugin\Alipay\Pay\Agreement\ClosePlugin as AgreementClosePlugin;
14
use Yansongda\Pay\Plugin\Alipay\Pay\App\ClosePlugin as AppClosePlugin;
15
use Yansongda\Pay\Plugin\Alipay\Pay\Authorization\ClosePlugin as AuthorizationClosePlugin;
16
use Yansongda\Pay\Plugin\Alipay\Pay\Mini\ClosePlugin as MiniClosePlugin;
17
use Yansongda\Pay\Plugin\Alipay\Pay\Pos\ClosePlugin as PosClosePlugin;
18
use Yansongda\Pay\Plugin\Alipay\Pay\Scan\ClosePlugin as ScanClosePlugin;
19
use Yansongda\Pay\Plugin\Alipay\Pay\Wap\ClosePlugin as WapClosePlugin;
20
use Yansongda\Pay\Plugin\Alipay\Pay\Web\ClosePlugin as WebClosePlugin;
21
use Yansongda\Pay\Plugin\Alipay\ResponsePlugin;
22
use Yansongda\Pay\Plugin\Alipay\StartPlugin;
23
use Yansongda\Pay\Plugin\Alipay\VerifySignaturePlugin;
24
use Yansongda\Pay\Plugin\ParserPlugin;
25
use Yansongda\Supports\Str;
26
27
class CloseShortcut implements ShortcutInterface
28
{
29
    /**
30
     * @throws InvalidParamsException
31
     */
32
    public function getPlugins(array $params): array
33
    {
34
        $method = Str::camel($params['_action'] ?? 'default').'Plugins';
35
36
        if (method_exists($this, $method)) {
37
            return $this->{$method}();
38
        }
39
40
        throw new InvalidParamsException(Exception::SHORTCUT_MULTI_ACTION_ERROR, "Close action [{$method}] not supported");
41
    }
42
43
    protected function defaultPlugins(): array
44
    {
45
        return [
46
            StartPlugin::class,
47
            WebClosePlugin::class,
48
            FormatBizContentPlugin::class,
49
            AddSignaturePlugin::class,
50
            AddRadarPlugin::class,
51
            VerifySignaturePlugin::class,
52
            ResponsePlugin::class,
53
            ParserPlugin::class,
54
        ];
55
    }
56
57
    protected function agreementPlugins(): array
58
    {
59
        return [
60
            StartPlugin::class,
61
            AgreementClosePlugin::class,
62
            FormatBizContentPlugin::class,
63
            AddSignaturePlugin::class,
64
            AddRadarPlugin::class,
65
            VerifySignaturePlugin::class,
66
            ResponsePlugin::class,
67
            ParserPlugin::class,
68
        ];
69
    }
70
71
    protected function appPlugins(): array
72
    {
73
        return [
74
            StartPlugin::class,
75
            AppClosePlugin::class,
76
            FormatBizContentPlugin::class,
77
            AddSignaturePlugin::class,
78
            AddRadarPlugin::class,
79
            VerifySignaturePlugin::class,
80
            ResponsePlugin::class,
81
            ParserPlugin::class,
82
        ];
83
    }
84
85
    protected function authorizationPlugins(): array
86
    {
87
        return [
88
            StartPlugin::class,
89
            AuthorizationClosePlugin::class,
90
            FormatBizContentPlugin::class,
91
            AddSignaturePlugin::class,
92
            AddRadarPlugin::class,
93
            VerifySignaturePlugin::class,
94
            ResponsePlugin::class,
95
            ParserPlugin::class,
96
        ];
97
    }
98
99
    protected function miniPlugins(): array
100
    {
101
        return [
102
            StartPlugin::class,
103
            MiniClosePlugin::class,
104
            FormatBizContentPlugin::class,
105
            AddSignaturePlugin::class,
106
            AddRadarPlugin::class,
107
            VerifySignaturePlugin::class,
108
            ResponsePlugin::class,
109
            ParserPlugin::class,
110
        ];
111
    }
112
113
    protected function posPlugins(): array
114
    {
115
        return [
116
            StartPlugin::class,
117
            PosClosePlugin::class,
118
            FormatBizContentPlugin::class,
119
            AddSignaturePlugin::class,
120
            AddRadarPlugin::class,
121
            VerifySignaturePlugin::class,
122
            ResponsePlugin::class,
123
            ParserPlugin::class,
124
        ];
125
    }
126
127
    protected function scanPlugins(): array
128
    {
129
        return [
130
            StartPlugin::class,
131
            ScanClosePlugin::class,
132
            FormatBizContentPlugin::class,
133
            AddSignaturePlugin::class,
134
            AddRadarPlugin::class,
135
            VerifySignaturePlugin::class,
136
            ResponsePlugin::class,
137
            ParserPlugin::class,
138
        ];
139
    }
140
141
    protected function wapPlugins(): array
142
    {
143
        return [
144
            StartPlugin::class,
145
            WapClosePlugin::class,
146
            FormatBizContentPlugin::class,
147
            AddSignaturePlugin::class,
148
            AddRadarPlugin::class,
149
            VerifySignaturePlugin::class,
150
            ResponsePlugin::class,
151
            ParserPlugin::class,
152
        ];
153
    }
154
155
    protected function webPlugins(): array
156
    {
157
        return [
158
            StartPlugin::class,
159
            WebClosePlugin::class,
160
            FormatBizContentPlugin::class,
161
            AddSignaturePlugin::class,
162
            AddRadarPlugin::class,
163
            VerifySignaturePlugin::class,
164
            ResponsePlugin::class,
165
            ParserPlugin::class,
166
        ];
167
    }
168
}
169