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