Commit b8fb5170 authored by Bas de Nooijer's avatar Bas de Nooijer

Refactored response header parsing into shared functionality

parent 64354f5b
......@@ -62,4 +62,27 @@ abstract class ResponseParser
return $result;
}
/**
* Parses header data (if available) and adds it to result data
*
* @param array $data
* @param array $result
* @return mixed
*/
public function addHeaderInfo($data, $result)
{
$status = null;
$queryTime = null;
if (isset($data['responseHeader'])) {
$status = $data['responseHeader']['status'];
$queryTime = $data['responseHeader']['QTime'];
}
$result['status'] = $status;
$result['queryTime'] = $queryTime;
return $result;
}
}
......@@ -64,18 +64,7 @@ class Field extends ResponseParserAbstract implements ResponseParserInterface
$items = array();
}
$status = null;
$queryTime = null;
if (isset($data['responseHeader'])) {
$status = $data['responseHeader']['status'];
$queryTime = $data['responseHeader']['QTime'];
}
return array(
'status' => $status,
'queryTime' => $queryTime,
'items' => $items
);
return $this->addHeaderInfo($data, array('items' => $items));
}
/**
......
......@@ -90,19 +90,13 @@ class ResponseParser extends ResponseParserAbstract implements ResponseParserInt
$numFound = null;
}
$status = null;
$queryTime = null;
if (isset($data['responseHeader'])) {
$status = $data['responseHeader']['status'];
$queryTime = $data['responseHeader']['QTime'];
}
return array(
'status' => $status,
'queryTime' => $queryTime,
'numfound' => $numFound,
'documents' => $documents,
'components' => $components,
return $this->addHeaderInfo(
$data,
array(
'numfound' => $numFound,
'documents' => $documents,
'components' => $components
)
);
}
......
......@@ -58,13 +58,6 @@ class ResponseParser extends ResponseParserAbstract implements ResponseParserInt
$data = $result->getData();
$query = $result->getQuery();
$status = null;
$queryTime = null;
if (isset($data['responseHeader'])) {
$status = $data['responseHeader']['status'];
$queryTime = $data['responseHeader']['QTime'];
}
$suggestions = array();
$collation = null;
......@@ -90,14 +83,13 @@ class ResponseParser extends ResponseParserAbstract implements ResponseParserInt
}
}
return array(
'status' => $status,
'queryTime' => $queryTime,
'results' => $suggestions,
'collation' => $collation,
return $this->addHeaderInfo(
$data,
array(
'results' => $suggestions,
'collation' => $collation,
)
);
}
}
......@@ -72,18 +72,7 @@ class ResponseParser extends ResponseParserAbstract implements ResponseParserInt
}
}
$status = null;
$queryTime = null;
if (isset($data['responseHeader'])) {
$status = $data['responseHeader']['status'];
$queryTime = $data['responseHeader']['QTime'];
}
return array(
'status' => $status,
'queryTime' => $queryTime,
'results' => $termResults,
);
return $this->addHeaderInfo($data, array('results' => $termResults));
}
}
......@@ -38,11 +38,12 @@
*/
namespace Solarium\QueryType\Update;
use Solarium\Core\Query\ResponseParserInterface;
use Solarium\Core\Query\ResponseParser as ResponseParserAbstract;
/**
* Parse update response data
*/
class ResponseParser implements ResponseParserInterface
class ResponseParser extends ResponseParserAbstract implements ResponseParserInterface
{
/**
......@@ -54,18 +55,7 @@ class ResponseParser implements ResponseParserInterface
public function parse($result)
{
$data = $result->getData();
$status = null;
$queryTime = null;
if (isset($data['responseHeader'])) {
$status = $data['responseHeader']['status'];
$queryTime = $data['responseHeader']['QTime'];
}
return array(
'status' => $status,
'queryTime' => $queryTime,
);
return $this->addHeaderInfo($data, array());
}
}
......@@ -67,6 +67,37 @@ class ResponseParserTest extends \PHPUnit_Framework_TestCase
);
}
public function testAddHeaderInfo()
{
$data = array(
'responseHeader' => array(
'status' => 0,
'QTime' => 5,
)
);
$result = array('key' => 'value');
$expected = array(
'key' => 'value',
'status' => 0,
'queryTime' => 5,
);
$this->assertEquals($expected, $this->parser->addHeaderInfo($data, $result));
}
public function testAddHeaderInfoEmpty()
{
$data = array();
$result = array('key' => 'value');
$expected = array(
'key' => 'value',
'status' => null,
'queryTime' => null,
);
$this->assertEquals($expected, $this->parser->addHeaderInfo($data, $result));
}
}
/**
......
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