ResponseSet.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace Elastica\Bulk;
  3. use Elastica\Response as BaseResponse;
  4. class ResponseSet extends BaseResponse implements \Iterator, \Countable
  5. {
  6. /**
  7. * @var \Elastica\Bulk\Response[]
  8. */
  9. protected $_bulkResponses = [];
  10. /**
  11. * @var int
  12. */
  13. protected $_position = 0;
  14. /**
  15. * @param \Elastica\Response $response
  16. * @param \Elastica\Bulk\Response[] $bulkResponses
  17. */
  18. public function __construct(BaseResponse $response, array $bulkResponses)
  19. {
  20. parent::__construct($response->getData());
  21. $this->_bulkResponses = $bulkResponses;
  22. }
  23. /**
  24. * @return \Elastica\Bulk\Response[]
  25. */
  26. public function getBulkResponses()
  27. {
  28. return $this->_bulkResponses;
  29. }
  30. /**
  31. * Returns first found error.
  32. *
  33. * @return string
  34. */
  35. public function getError()
  36. {
  37. foreach ($this->getBulkResponses() as $bulkResponse) {
  38. if ($bulkResponse->hasError()) {
  39. return $bulkResponse->getError();
  40. }
  41. }
  42. return '';
  43. }
  44. /**
  45. * Returns first found error (full array).
  46. *
  47. * @return array|string
  48. */
  49. public function getFullError()
  50. {
  51. foreach ($this->getBulkResponses() as $bulkResponse) {
  52. if ($bulkResponse->hasError()) {
  53. return $bulkResponse->getFullError();
  54. }
  55. }
  56. return '';
  57. }
  58. /**
  59. * @return bool
  60. */
  61. public function isOk()
  62. {
  63. foreach ($this->getBulkResponses() as $bulkResponse) {
  64. if (!$bulkResponse->isOk()) {
  65. return false;
  66. }
  67. }
  68. return true;
  69. }
  70. /**
  71. * @return bool
  72. */
  73. public function hasError()
  74. {
  75. foreach ($this->getBulkResponses() as $bulkResponse) {
  76. if ($bulkResponse->hasError()) {
  77. return true;
  78. }
  79. }
  80. return false;
  81. }
  82. /**
  83. * @return \Elastica\Bulk\Response
  84. */
  85. public function current()
  86. {
  87. return $this->_bulkResponses[$this->key()];
  88. }
  89. public function next()
  90. {
  91. ++$this->_position;
  92. }
  93. /**
  94. * @return int
  95. */
  96. public function key()
  97. {
  98. return $this->_position;
  99. }
  100. /**
  101. * @return bool
  102. */
  103. public function valid()
  104. {
  105. return isset($this->_bulkResponses[$this->key()]);
  106. }
  107. public function rewind()
  108. {
  109. $this->_position = 0;
  110. }
  111. /**
  112. * @return int
  113. */
  114. public function count()
  115. {
  116. return count($this->_bulkResponses);
  117. }
  118. }