Nenhuma Descrição

Message.php 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <?php
  2. namespace AliyunMNS\Model;
  3. use AliyunMNS\Constants;
  4. use AliyunMNS\Traits\MessagePropertiesForReceive;
  5. class Message
  6. {
  7. use MessagePropertiesForReceive;
  8. public function __construct($messageId, $messageBodyMD5, $messageBody, $enqueueTime, $nextVisibleTime, $firstDequeueTime, $dequeueCount, $priority, $receiptHandle)
  9. {
  10. $this->messageId = $messageId;
  11. $this->messageBodyMD5 = $messageBodyMD5;
  12. $this->messageBody = $messageBody;
  13. $this->enqueueTime = $enqueueTime;
  14. $this->nextVisibleTime = $nextVisibleTime;
  15. $this->firstDequeueTime = $firstDequeueTime;
  16. $this->dequeueCount = $dequeueCount;
  17. $this->priority = $priority;
  18. $this->receiptHandle = $receiptHandle;
  19. }
  20. static public function fromXML(\XMLReader $xmlReader, $base64)
  21. {
  22. $messageId = NULL;
  23. $messageBodyMD5 = NULL;
  24. $messageBody = NULL;
  25. $enqueueTime = NULL;
  26. $nextVisibleTime = NULL;
  27. $firstDequeueTime = NULL;
  28. $dequeueCount = NULL;
  29. $priority = NULL;
  30. $receiptHandle = NULL;
  31. while ($xmlReader->read())
  32. {
  33. switch ($xmlReader->nodeType)
  34. {
  35. case \XMLReader::ELEMENT:
  36. switch ($xmlReader->name) {
  37. case Constants::MESSAGE_ID:
  38. $xmlReader->read();
  39. if ($xmlReader->nodeType == \XMLReader::TEXT)
  40. {
  41. $messageId = $xmlReader->value;
  42. }
  43. break;
  44. case Constants::MESSAGE_BODY_MD5:
  45. $xmlReader->read();
  46. if ($xmlReader->nodeType == \XMLReader::TEXT)
  47. {
  48. $messageBodyMD5 = $xmlReader->value;
  49. }
  50. break;
  51. case Constants::MESSAGE_BODY:
  52. $xmlReader->read();
  53. if ($xmlReader->nodeType == \XMLReader::TEXT)
  54. {
  55. if ($base64 == TRUE) {
  56. $messageBody = base64_decode($xmlReader->value);
  57. } else {
  58. $messageBody = $xmlReader->value;
  59. }
  60. }
  61. break;
  62. case Constants::ENQUEUE_TIME:
  63. $xmlReader->read();
  64. if ($xmlReader->nodeType == \XMLReader::TEXT)
  65. {
  66. $enqueueTime = $xmlReader->value;
  67. }
  68. break;
  69. case Constants::NEXT_VISIBLE_TIME:
  70. $xmlReader->read();
  71. if ($xmlReader->nodeType == \XMLReader::TEXT)
  72. {
  73. $nextVisibleTime = $xmlReader->value;
  74. }
  75. break;
  76. case Constants::FIRST_DEQUEUE_TIME:
  77. $xmlReader->read();
  78. if ($xmlReader->nodeType == \XMLReader::TEXT)
  79. {
  80. $firstDequeueTime = $xmlReader->value;
  81. }
  82. break;
  83. case Constants::DEQUEUE_COUNT:
  84. $xmlReader->read();
  85. if ($xmlReader->nodeType == \XMLReader::TEXT)
  86. {
  87. $dequeueCount = $xmlReader->value;
  88. }
  89. break;
  90. case Constants::PRIORITY:
  91. $xmlReader->read();
  92. if ($xmlReader->nodeType == \XMLReader::TEXT)
  93. {
  94. $priority = $xmlReader->value;
  95. }
  96. break;
  97. case Constants::RECEIPT_HANDLE:
  98. $xmlReader->read();
  99. if ($xmlReader->nodeType == \XMLReader::TEXT)
  100. {
  101. $receiptHandle = $xmlReader->value;
  102. }
  103. break;
  104. }
  105. break;
  106. case \XMLReader::END_ELEMENT:
  107. if ($xmlReader->name == 'Message')
  108. {
  109. $message = new Message(
  110. $messageId,
  111. $messageBodyMD5,
  112. $messageBody,
  113. $enqueueTime,
  114. $nextVisibleTime,
  115. $firstDequeueTime,
  116. $dequeueCount,
  117. $priority,
  118. $receiptHandle);
  119. return $message;
  120. }
  121. break;
  122. }
  123. }
  124. $message = new Message(
  125. $messageId,
  126. $messageBodyMD5,
  127. $messageBody,
  128. $enqueueTime,
  129. $nextVisibleTime,
  130. $firstDequeueTime,
  131. $dequeueCount,
  132. $priority,
  133. $receiptHandle);
  134. return $message;
  135. }
  136. }
  137. ?>