GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 9a7ea4...53d770 )
by Yang
02:32
created

Queue   C

Complexity

Total Complexity 25

Size/Duplication

Total Lines 344
Duplicated Lines 12.79 %

Coupling/Cohesion

Components 1
Dependencies 23

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 25
c 3
b 0
f 0
lcom 1
cbo 23
dl 44
loc 344
rs 5.5

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
namespace AliyunMNS;
3
4
use AliyunMNS\Http\HttpClient;
5
use AliyunMNS\AsyncCallback;
6
use AliyunMNS\Model\QueueAttributes;
7
use AliyunMNS\Requests\SetQueueAttributeRequest;
8
use AliyunMNS\Responses\SetQueueAttributeResponse;
9
use AliyunMNS\Requests\GetQueueAttributeRequest;
10
use AliyunMNS\Responses\GetQueueAttributeResponse;
11
use AliyunMNS\Requests\SendMessageRequest;
12
use AliyunMNS\Responses\SendMessageResponse;
13
use AliyunMNS\Requests\PeekMessageRequest;
14
use AliyunMNS\Responses\PeekMessageResponse;
15
use AliyunMNS\Requests\ReceiveMessageRequest;
16
use AliyunMNS\Responses\ReceiveMessageResponse;
17
use AliyunMNS\Requests\DeleteMessageRequest;
18
use AliyunMNS\Responses\DeleteMessageResponse;
19
use AliyunMNS\Requests\ChangeMessageVisibilityRequest;
20
use AliyunMNS\Responses\ChangeMessageVisibilityResponse;
21
use AliyunMNS\Requests\BatchSendMessageRequest;
22
use AliyunMNS\Responses\BatchSendMessageResponse;
23
use AliyunMNS\Requests\BatchReceiveMessageRequest;
24
use AliyunMNS\Responses\BatchReceiveMessageResponse;
25
use AliyunMNS\Requests\BatchPeekMessageRequest;
26
use AliyunMNS\Responses\BatchPeekMessageResponse;
27
use AliyunMNS\Requests\BatchDeleteMessageRequest;
28
use AliyunMNS\Responses\BatchDeleteMessageResponse;
29
30
class Queue
31
{
32
    private $queueName;
33
    private $client;
34
35
    // boolean, whether the message body will be encoded in base64
36
    private $base64;
37
38
    public function __construct(HttpClient $client, $queueName, $base64 = TRUE)
39
    {
40
        $this->queueName = $queueName;
41
        $this->client = $client;
42
        $this->base64 = $base64;
43
    }
44
45
    public function setBase64($base64)
46
    {
47
        $this->base64 = $base64;
48
    }
49
50
    public function isBase64()
51
    {
52
        return ($this->base64 == TRUE);
53
    }
54
55
    public function getQueueName()
56
    {
57
        return $this->queueName;
58
    }
59
60
    /**
61
     * Set the QueueAttributes, detail API sepcs:
62
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&queue_operation
63
     *
64
     * @param QueueAttributes $attributes: the QueueAttributes to set
65
     *
66
     * @return SetQueueAttributeResponse: the response
67
     *
68
     * @throws QueueNotExistException if queue does not exist
69
     * @throws InvalidArgumentException if any argument value is invalid
70
     * @throws MnsException if any other exception happends
71
     */
72
    public function setAttribute(QueueAttributes $attributes)
73
    {
74
        $request = new SetQueueAttributeRequest($this->queueName, $attributes);
75
        $response = new SetQueueAttributeResponse();
76
        return $this->client->sendRequest($request, $response);
77
    }
78
79
    public function setAttributeAsync(QueueAttributes $attributes,
80
        AsyncCallback $callback = NULL)
81
    {
82
        $request = new SetQueueAttributeRequest($this->queueName, $attributes);
83
        $response = new SetQueueAttributeResponse();
84
        return $this->client->sendRequestAsync($request, $response, $callback);
85
    }
86
87
    /**
88
     * Get the QueueAttributes, detail API sepcs:
89
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&queue_operation
90
     *
91
     * @return GetQueueAttributeResponse: containing the attributes
92
     *
93
     * @throws QueueNotExistException if queue does not exist
94
     * @throws MnsException if any other exception happends
95
     */
96
    public function getAttribute()
97
    {
98
        $request = new GetQueueAttributeRequest($this->queueName);
99
        $response = new GetQueueAttributeResponse();
100
        return $this->client->sendRequest($request, $response);
101
    }
102
103
    public function getAttributeAsync(AsyncCallback $callback = NULL)
104
    {
105
        $request = new GetQueueAttributeRequest($this->queueName);
106
        $response = new GetQueueAttributeResponse();
107
        return $this->client->sendRequestAsync($request, $response, $callback);
108
    }
109
110
    /**
111
     * SendMessage, the messageBody will be automatically encoded in base64
112
     *     If you do not need the message body to be encoded in Base64,
113
     *     please specify the $base64 = FALSE in Queue
114
     *
115
     * detail API sepcs:
116
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
117
     *
118
     * @param SendMessageRequest: containing the message body and properties
119
     *
120
     * @return SendMessageResponse: containing the messageId and bodyMD5
121
     *
122
     * @throws QueueNotExistException if queue does not exist
123
     * @throws InvalidArgumentException if any argument value is invalid
124
     * @throws MalformedXMLException if any error in xml
125
     * @throws MnsException if any other exception happends
126
     */
127
    public function sendMessage(SendMessageRequest $request)
128
    {
129
        $request->setQueueName($this->queueName);
130
        $request->setBase64($this->base64);
131
        $response = new SendMessageResponse();
132
        return $this->client->sendRequest($request, $response);
133
    }
134
135
    public function sendMessageAsync(SendMessageRequest $request,
136
        AsyncCallback $callback = NULL)
137
    {
138
        $request->setQueueName($this->queueName);
139
        $request->setBase64($this->base64);
140
        $response = new SendMessageResponse();
141
        return $this->client->sendRequestAsync($request, $response, $callback);
142
    }
143
144
    /**
145
     * PeekMessage, the messageBody will be automatically decoded as base64 if the $base64 in Queue is TRUE
146
     *
147
     * detail API sepcs:
148
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
149
     *
150
     * @return PeekMessageResponse: containing the messageBody and properties
151
     *
152
     * @throws QueueNotExistException if queue does not exist
153
     * @throws MessageNotExistException if no message exists in the queue
154
     * @throws MnsException if any other exception happends
155
     */
156
    public function peekMessage()
157
    {
158
        $request = new PeekMessageRequest($this->queueName);
159
        $response = new PeekMessageResponse($this->base64);
160
        return $this->client->sendRequest($request, $response);
161
    }
162
163
    public function peekMessageAsync(AsyncCallback $callback = NULL)
164
    {
165
        $request = new PeekMessageRequest($this->queueName);
166
        $response = new PeekMessageResponse($this->base64);
167
        return $this->client->sendRequestAsync($request, $response, $callback);
168
    }
169
170
    /**
171
     * ReceiveMessage, the messageBody will be automatically decoded as base64 if $base64 = TRUE in Queue
172
     * detail API sepcs:
173
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
174
     *
175
     * @return ReceiveMessageResponse: containing the messageBody and properties
176
     *          the response is same as PeekMessageResponse,
177
     *          except that the receiptHandle is also returned in receiveMessage
178
     *
179
     * @throws QueueNotExistException if queue does not exist
180
     * @throws MessageNotExistException if no message exists in the queue
181
     * @throws MnsException if any other exception happends
182
     */
183
    public function receiveMessage()
184
    {
185
        $request = new ReceiveMessageRequest($this->queueName);
186
        $response = new ReceiveMessageResponse($this->base64);
187
        return $this->client->sendRequest($request, $response);
188
    }
189
190
    public function receiveMessageAsync(AsyncCallback $callback = NULL)
191
    {
192
        $request = new ReceiveMessageRequest($this->queueName);
193
        $response = new ReceiveMessageResponse($this->base64);
194
        return $this->client->sendRequestAsync($request, $response, $callback);
195
    }
196
197
    /**
198
     * DeleteMessage
199
     * detail API sepcs:
200
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
201
     *
202
     * @param $receiptHandle: the receiptHandle returned from receiveMessage
203
     *
204
     * @return ReceiveMessageResponse
205
     *
206
     * @throws QueueNotExistException if queue does not exist
207
     * @throws InvalidArgumentException if the argument is invalid
208
     * @throws ReceiptHandleErrorException if the $receiptHandle is invalid
209
     * @throws MnsException if any other exception happends
210
     */
211
    public function deleteMessage($receiptHandle)
212
    {
213
        $request = new DeleteMessageRequest($this->queueName, $receiptHandle);
214
        $response = new DeleteMessageResponse();
215
        return $this->client->sendRequest($request, $response);
216
    }
217
218
    public function deleteMessageAsync($receiptHandle,
219
        AsyncCallback $callback = NULL)
220
    {
221
        $request = new DeleteMessageRequest($this->queueName, $receiptHandle);
222
        $response = new DeleteMessageResponse();
223
        return $this->client->sendRequestAsync($request, $response, $callback);
224
    }
225
226
    /**
227
     * ChangeMessageVisibility, set the nextVisibleTime for the message
228
     * detail API sepcs:
229
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
230
     *
231
     * @param $receiptHandle: the receiptHandle returned from receiveMessage
232
     *
233
     * @return ChangeMessageVisibilityResponse
234
     *
235
     * @throws QueueNotExistException if queue does not exist
236
     * @throws MessageNotExistException if the message does not exist
237
     * @throws InvalidArgumentException if the argument is invalid
238
     * @throws ReceiptHandleErrorException if the $receiptHandle is invalid
239
     * @throws MnsException if any other exception happends
240
     */
241
    public function changeMessageVisibility($receiptHandle, $visibilityTimeout)
242
    {
243
        $request = new ChangeMessageVisibilityRequest($this->queueName, $receiptHandle, $visibilityTimeout);
244
        $response = new ChangeMessageVisibilityResponse();
245
        return $this->client->sendRequest($request, $response);
246
    }
247
248
    /**
249
     * BatchSendMessage, message body will be automatically encoded in base64
250
     *     If you do not need the message body to be encoded in Base64,
251
     *     please specify the $base64 = FALSE in Queue
252
     *
253
     * detail API sepcs:
254
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
255
     *
256
     * @param BatchSendMessageRequest:
257
     *            the requests containing an array of SendMessageRequestItems
258
     *
259
     * @return BatchSendMessageResponse
260
     *
261
     * @throws QueueNotExistException if queue does not exist
262
     * @throws MalformedXMLException if any error in the xml
263
     * @throws InvalidArgumentException if the argument is invalid
264
     * @throws BatchSendFailException if some messages are not sent
265
     * @throws MnsException if any other exception happends
266
     */
267
    public function batchSendMessage(BatchSendMessageRequest $request)
268
    {
269
        $request->setQueueName($this->queueName);
270
        $request->setBase64($this->base64);
271
        $response = new BatchSendMessageResponse();
272
        return $this->client->sendRequest($request, $response);
273
    }
274
275
    public function batchSendMessageAsync(BatchSendMessageRequest $request,
276
        AsyncCallback $callback = NULL)
277
    {
278
        $request->setQueueName($this->queueName);
279
        $request->setBase64($this->base64);
280
        $response = new BatchSendMessageResponse();
281
        return $this->client->sendRequestAsync($request, $response, $callback);
282
    }
283
284
    /**
285
     * BatchReceiveMessage, message body will be automatically decoded as base64 if $base64 = TRUE in Queue
286
     *
287
     * detail API sepcs:
288
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
289
     *
290
     * @param BatchReceiveMessageRequest:
291
     *            containing numOfMessages and waitSeconds
292
     *
293
     * @return BatchReceiveMessageResponse:
294
     *            the received messages
295
     *
296
     * @throws QueueNotExistException if queue does not exist
297
     * @throws MessageNotExistException if no message exists
298
     * @throws MnsException if any other exception happends
299
     */
300
    public function batchReceiveMessage(BatchReceiveMessageRequest $request)
301
    {
302
        $request->setQueueName($this->queueName);
303
        $response = new BatchReceiveMessageResponse($this->base64);
304
        return $this->client->sendRequest($request, $response);
305
    }
306
307
    public function batchReceiveMessageAsync(BatchReceiveMessageRequest $request, AsyncCallback $callback = NULL)
308
    {
309
        $request->setQueueName($this->queueName);
310
        $response = new BatchReceiveMessageResponse($this->base64);
311
        return $this->client->sendRequestAsync($request, $response, $callback);
312
    }
313
314
    /**
315
     * BatchPeekMessage, message body will be automatically decoded as base64 is $base64 = TRUE in Queue
316
     *
317
     * detail API sepcs:
318
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
319
     *
320
     * @param BatchPeekMessageRequest:
321
     *            containing numOfMessages and waitSeconds
322
     *
323
     * @return BatchPeekMessageResponse:
324
     *            the received messages
325
     *
326
     * @throws QueueNotExistException if queue does not exist
327
     * @throws MessageNotExistException if no message exists
328
     * @throws MnsException if any other exception happends
329
     */
330
    public function batchPeekMessage($numOfMessages)
331
    {
332
        $request = new BatchPeekMessageRequest($this->queueName, $numOfMessages);
333
        $response = new BatchPeekMessageResponse($this->base64);
334
        return $this->client->sendRequest($request, $response);
335
    }
336
337
    public function batchPeekMessageAsync($numOfMessages, AsyncCallback $callback = NULL)
338
    {
339
        $request = new BatchPeekMessageRequest($this->queueName, $numOfMessages);
340
        $response = new BatchPeekMessageResponse($this->base64);
341
        return $this->client->sendRequestAsync($request, $response, $callback);
342
    }
343
344
    /**
345
     * BatchDeleteMessage
346
     * detail API sepcs:
347
     * https://docs.aliyun.com/?spm=#/pub/mns/api_reference/api_spec&message_operation
348
     *
349
     * @param $receiptHandles:
350
     *            array of $receiptHandle, which is got from receiveMessage
351
     *
352
     * @return BatchDeleteMessageResponse
353
     *
354
     * @throws QueueNotExistException if queue does not exist
355
     * @throws ReceiptHandleErrorException if the receiptHandle is invalid
356
     * @throws InvalidArgumentException if the argument is invalid
357
     * @throws BatchDeleteFailException if any message not deleted
358
     * @throws MnsException if any other exception happends
359
     */
360
    public function batchDeleteMessage($receiptHandles)
361
    {
362
        $request = new BatchDeleteMessageRequest($this->queueName, $receiptHandles);
363
        $response = new BatchDeleteMessageResponse();
364
        return $this->client->sendRequest($request, $response);
365
    }
366
367
    public function batchDeleteMessageAsync($receiptHandles, AsyncCallback $callback = NULL)
368
    {
369
        $request = new BatchDeleteMessageRequest($this->queueName, $receiptHandles);
370
        $response = new BatchDeleteMessageResponse();
371
        return $this->client->sendRequestAsync($request, $response, $callback);
372
    }
373
}
374
375
?>
376