Nav apraksta

BatchDeleteMessageResponse.php 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. namespace AliyunMNS\Responses;
  3. use AliyunMNS\Constants;
  4. use AliyunMNS\Exception\MnsException;
  5. use AliyunMNS\Exception\QueueNotExistException;
  6. use AliyunMNS\Exception\InvalidArgumentException;
  7. use AliyunMNS\Exception\BatchDeleteFailException;
  8. use AliyunMNS\Exception\ReceiptHandleErrorException;
  9. use AliyunMNS\Responses\BaseResponse;
  10. use AliyunMNS\Common\XMLParser;
  11. use AliyunMNS\Model\DeleteMessageErrorItem;
  12. class BatchDeleteMessageResponse extends BaseResponse
  13. {
  14. public function __construct()
  15. {
  16. }
  17. public function parseResponse($statusCode, $content)
  18. {
  19. $this->statusCode = $statusCode;
  20. if ($statusCode == 204) {
  21. $this->succeed = TRUE;
  22. } else {
  23. $this->parseErrorResponse($statusCode, $content);
  24. }
  25. }
  26. public function parseErrorResponse($statusCode, $content, MnsException $exception = NULL)
  27. {
  28. $this->succeed = FALSE;
  29. $xmlReader = $this->loadXmlContent($content);
  30. try {
  31. while ($xmlReader->read())
  32. {
  33. if ($xmlReader->nodeType == \XMLReader::ELEMENT) {
  34. switch ($xmlReader->name) {
  35. case Constants::ERROR:
  36. $this->parseNormalErrorResponse($xmlReader);
  37. break;
  38. default: // case Constants::Messages
  39. $this->parseBatchDeleteErrorResponse($xmlReader);
  40. break;
  41. }
  42. }
  43. }
  44. } catch (\Exception $e) {
  45. if ($exception != NULL) {
  46. throw $exception;
  47. } elseif($e instanceof MnsException) {
  48. throw $e;
  49. } else {
  50. throw new MnsException($statusCode, $e->getMessage());
  51. }
  52. } catch (\Throwable $t) {
  53. throw new MnsException($statusCode, $t->getMessage());
  54. }
  55. }
  56. private function parseBatchDeleteErrorResponse($xmlReader)
  57. {
  58. $ex = new BatchDeleteFailException($this->statusCode, "BatchDeleteMessage Failed For Some ReceiptHandles");
  59. while ($xmlReader->read())
  60. {
  61. if ($xmlReader->nodeType == \XMLReader::ELEMENT && $xmlReader->name == Constants::ERROR) {
  62. $ex->addDeleteMessageErrorItem( DeleteMessageErrorItem::fromXML($xmlReader));
  63. }
  64. }
  65. throw $ex;
  66. }
  67. private function parseNormalErrorResponse($xmlReader)
  68. {
  69. $result = XMLParser::parseNormalError($xmlReader);
  70. if ($result['Code'] == Constants::INVALID_ARGUMENT)
  71. {
  72. throw new InvalidArgumentException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']);
  73. }
  74. if ($result['Code'] == Constants::QUEUE_NOT_EXIST)
  75. {
  76. throw new QueueNotExistException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']);
  77. }
  78. if ($result['Code'] == Constants::RECEIPT_HANDLE_ERROR)
  79. {
  80. throw new ReceiptHandleErrorException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']);
  81. }
  82. throw new MnsException($statusCode, $result['Message'], $exception, $result['Code'], $result['RequestId'], $result['HostId']);
  83. }
  84. }
  85. ?>