diff options
Diffstat (limited to 'src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php')
| -rw-r--r-- | src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php b/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php index 2d74a4e..4cc02d6 100644 --- a/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php +++ b/src/phorkie/Database/Adapter/Elasticsearch/HTTPRequest.php @@ -3,22 +3,30 @@ namespace phorkie; class Database_Adapter_Elasticsearch_HTTPRequest extends \HTTP_Request2 { + public $allow404 = false; + public function send() { $res = parent::send(); $mainCode = intval($res->getStatus() / 100); - if ($mainCode != 2) { - $js = json_decode($res->getBody()); - if (isset($js->error)) { - $error = $js->error; - } else { - $error = $res->getBody(); - } - throw new Exception( - 'Error in elasticsearch communication: ' . $error - ); + if ($mainCode === 2) { + return $res; + } + + if ($this->allow404 && $res->getStatus() == 404) { + return $res; + } + $js = json_decode($res->getBody()); + if (isset($js->error)) { + $error = $js->error; + } else { + $error = $res->getBody(); } - return $res; + throw new Exception( + 'Error in elasticsearch communication' + . '(status code ' . $res->getStatus() . '): ' + . $error + ); } } |
