Commit eb317507 by Carsten Brandt

made elasticsearch error messages more readable

parent 2b47bc69
...@@ -7,6 +7,7 @@ Yii Framework 2 elasticsearch extension Change Log ...@@ -7,6 +7,7 @@ Yii Framework 2 elasticsearch extension Change Log
- Bug #3587: Fixed an issue with storing empty records (cebe) - Bug #3587: Fixed an issue with storing empty records (cebe)
- Enh #3520: Added `unlinkAll()`-method to active record to remove all records of a model relation (NmDimas, samdark, cebe) - Enh #3520: Added `unlinkAll()`-method to active record to remove all records of a model relation (NmDimas, samdark, cebe)
- Enh #3527: Added `highlight` property to Query and ActiveRecord. (Borales) - Enh #3527: Added `highlight` property to Query and ActiveRecord. (Borales)
- Enh: Make error messages more readable in HTML output
- Chg: asArray in ActiveQuery is now equal to using the normal Query. This means, that the output structure has changed and `with` is supported anymore. (cebe) - Chg: asArray in ActiveQuery is now equal to using the normal Query. This means, that the output structure has changed and `with` is supported anymore. (cebe)
- Chg: Deletion of a record is now also considered successful if the record did not exist. (cebe) - Chg: Deletion of a record is now also considered successful if the record did not exist. (cebe)
- Chg: Requirement changes: Yii now requires elasticsearch version 1.0 or higher (cebe) - Chg: Requirement changes: Yii now requires elasticsearch version 1.0 or higher (cebe)
......
...@@ -10,6 +10,7 @@ namespace yii\elasticsearch; ...@@ -10,6 +10,7 @@ namespace yii\elasticsearch;
use Yii; use Yii;
use yii\base\Component; use yii\base\Component;
use yii\base\InvalidConfigException; use yii\base\InvalidConfigException;
use yii\base\InvalidParamException;
use yii\helpers\Json; use yii\helpers\Json;
/** /**
...@@ -381,7 +382,7 @@ class Connection extends Component ...@@ -381,7 +382,7 @@ class Connection extends Component
'requestUrl' => $url, 'requestUrl' => $url,
'requestBody' => $requestBody, 'requestBody' => $requestBody,
'responseHeaders' => $headers, 'responseHeaders' => $headers,
'responseBody' => $body, 'responseBody' => $this->decodeErrorBody($body),
]); ]);
} }
...@@ -403,7 +404,7 @@ class Connection extends Component ...@@ -403,7 +404,7 @@ class Connection extends Component
'requestBody' => $requestBody, 'requestBody' => $requestBody,
'responseCode' => $responseCode, 'responseCode' => $responseCode,
'responseHeaders' => $headers, 'responseHeaders' => $headers,
'responseBody' => $body, 'responseBody' => $this->decodeErrorBody($body),
]); ]);
} }
if (isset($headers['content-type']) && !strncmp($headers['content-type'], 'application/json', 16)) { if (isset($headers['content-type']) && !strncmp($headers['content-type'], 'application/json', 16)) {
...@@ -415,7 +416,7 @@ class Connection extends Component ...@@ -415,7 +416,7 @@ class Connection extends Component
'requestBody' => $requestBody, 'requestBody' => $requestBody,
'responseCode' => $responseCode, 'responseCode' => $responseCode,
'responseHeaders' => $headers, 'responseHeaders' => $headers,
'responseBody' => $body, 'responseBody' => $this->decodeErrorBody($body),
]); ]);
} }
} elseif ($responseCode == 404) { } elseif ($responseCode == 404) {
...@@ -427,11 +428,29 @@ class Connection extends Component ...@@ -427,11 +428,29 @@ class Connection extends Component
'requestBody' => $requestBody, 'requestBody' => $requestBody,
'responseCode' => $responseCode, 'responseCode' => $responseCode,
'responseHeaders' => $headers, 'responseHeaders' => $headers,
'responseBody' => $body, 'responseBody' => $this->decodeErrorBody($body),
]); ]);
} }
} }
/**
* Try to decode error information if it is valid json, return it if not.
* @param $body
* @return mixed
*/
protected function decodeErrorBody($body)
{
try {
$decoded = Json::decode($body);
if (isset($decoded['error'])) {
$decoded['error'] = preg_replace('/\b\w+?Exception\[/', "<span style=\"color: red;\">\\0</span>\n ", $decoded['error']);
}
return $decoded;
} catch(InvalidParamException $e) {
return $body;
}
}
public function getNodeInfo() public function getNodeInfo()
{ {
return $this->get([]); return $this->get([]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment