Skip to content

Commit

Permalink
remove lucene search, update sort params and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tgloeggl committed May 17, 2024
1 parent 4209600 commit 3bac9bf
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 111 deletions.
102 changes: 22 additions & 80 deletions src/OpencastApi/Rest/OcSearch.php
Original file line number Diff line number Diff line change
Expand Up @@ -64,84 +64,23 @@ public function getEpisodes($params = [], $format = '')
$query['sign'] = $params['sign'];
}

$sortsASC = [
'DATE_CREATED', 'DATE_MODIFIED', 'TITLE', 'SERIES_ID',
'MEDIA_PACKAGE_ID', 'CREATOR', 'CONTRIBUTOR', 'LANGUAGE',
'LICENSE','SUBJECT','DESCRIPTION','PUBLISHER',
$sorts = [
'created', 'modified', 'title', 'creator', 'contributor'
];
$sortsDESC = array_map(function ($sort) {
return "{$sort}_DESC";
}, $sortsASC);

$sorts = array_merge($sortsASC, $sortsDESC);

if (array_key_exists('sort', $params) && !empty($params['sort']) &&
in_array($params['sort'], $sorts)) {
$query['sort'] = $params['sort'];
}

$options = $this->restClient->getQueryParams($query);
return $this->restClient->performGet($uri, $options);
}
$sortsASC = array_map(function ($sort) {
return "{$sort} asc";
}, $sorts);

/**
* Search a lucene query as object (JSON) by default or XML (text) on demand.
*
* @param array $params the params to pass to the call: it must cointain the following:
* $params = [
* 'q' => '{ The lucene query. }',
* 'series' => '{ Include series in the search result. (Default value=false)}',
* 'sort' => '{ The sort order. May include any of the following: DATE_CREATED, DATE_MODIFIED, TITLE, SERIES_ID, MEDIA_PACKAGE_ID, CREATOR, CONTRIBUTOR, LANGUAGE, LICENSE, SUBJECT, DESCRIPTION, PUBLISHER. Add '_DESC' to reverse the sort order (e.g. TITLE_DESC).}',
* 'limit' => '{ The maximum number of items to return per page. (Default value=20)}',
* 'offset' => '{The page number. (Default value=0)}',
* 'admin' => '{Whether this is an administrative query (Default value=false)}',
* 'sign' => '{If results are to be signed (Default value=true)}',
* ]
* @param string $format The output format (json or xml) of the response body. (Default value = 'json')
*
* @return array the response result ['code' => 200, 'body' => '{The search results, formatted as xml or json}']
*/
public function getLucene($params = [], $format = '')
{
$uri = self::URI . "/lucene.json";
if (!empty($format) && strtolower($format) == 'xml') {
$uri = str_replace('json', 'xml', $uri);
}

$query = [];
if (array_key_exists('q', $params) && !empty($params['q'])) {
$query['q'] = $params['q'];
}
if (array_key_exists('series', $params) && is_bool($params['series'])) {
$query['series'] = $params['series'];
}
if (array_key_exists('limit', $params) && !empty(intval($params['limit']))) {
$query['limit'] = intval($params['limit']);
}
if (array_key_exists('offset', $params) && !empty(intval($params['offset']))) {
$query['offset'] = intval($params['offset']);
}
if (array_key_exists('admin', $params) && is_bool($params['admin'])) {
$query['admin'] = $params['admin'];
}
if (array_key_exists('sign', $params) && is_bool($params['sign'])) {
$query['sign'] = $params['sign'];
}

$sortsASC = [
'DATE_CREATED', 'DATE_MODIFIED', 'TITLE', 'SERIES_ID',
'MEDIA_PACKAGE_ID', 'CREATOR', 'CONTRIBUTOR', 'LANGUAGE',
'LICENSE','SUBJECT','DESCRIPTION','PUBLISHER',
];
$sortsDESC = array_map(function ($sort) {
return "{$sort}_DESC";
}, $sortsASC);
return "{$sort} desc";
}, $sorts);

$sorts = array_merge($sortsASC, $sortsDESC);
$sorts_list = array_merge($sorts, $sortsASC, $sortsDESC);

if (array_key_exists('sort', $params) && !empty($params['sort']) &&
in_array($params['sort'], $sorts)) {
$query['sort'] = $params['sort'];
in_array(strtolower($params['sort']), $sorts_list)) {
$query['sort'] = strtolower($params['sort']);
}

$options = $this->restClient->getQueryParams($query);
Expand Down Expand Up @@ -196,20 +135,23 @@ public function getSeries($params = [], $format = '')
$query['sign'] = $params['sign'];
}

$sortsASC = [
'DATE_CREATED', 'DATE_MODIFIED', 'TITLE', 'SERIES_ID',
'MEDIA_PACKAGE_ID', 'CREATOR', 'CONTRIBUTOR', 'LANGUAGE',
'LICENSE','SUBJECT','DESCRIPTION','PUBLISHER',
$sorts = [
'created', 'modified', 'title', 'creator', 'contributor'
];

$sortsASC = array_map(function ($sort) {
return "{$sort} asc";
}, $sorts);

$sortsDESC = array_map(function ($sort) {
return "{$sort}_DESC";
}, $sortsASC);
return "{$sort} desc";
}, $sorts);

$sorts = array_merge($sortsASC, $sortsDESC);
$sorts_list = array_merge($sorts, $sortsASC, $sortsDESC);

if (array_key_exists('sort', $params) && !empty($params['sort']) &&
in_array($params['sort'], $sorts)) {
$query['sort'] = $params['sort'];
in_array(strtolower($params['sort']), $sorts_list)) {
$query['sort'] = strtolower($params['sort']);
}

$options = $this->restClient->getQueryParams($query);
Expand Down
23 changes: 2 additions & 21 deletions tests/DataProvider/SearchDataProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,10 @@ public static function getEpisodeQueryCases(): array
{
return [
[[], 'json'],
[[], 'xml'],
[[], 'XML'],
[['id' => 'fe0b45b0-7ed5-4944-8b0a-a0a283331791'], ''],
[['sid' => '8010876e-1dce-4d38-ab8d-24b956e3d8b7'], ''],
[['sname' => 'HUB_LOCAL_TEST'], ''],
[['sort' => 'DATE_CREATED_DESC'], ''],
[['offset' => 1], ''],
[['limit' => 1], ''],
[['admin' => true], ''],
[['sign' => true], ''],
];
}

public static function getLuceneQueryCases(): array
{
return [
[[], 'json'],
[[], 'xml'],
[[], 'XML'],
[['series' => true], ''],
[['sort' => 'DATE_CREATED_DESC'], ''],
[['sort' => 'modified asc'], ''],
[['offset' => 1], ''],
[['limit' => 1], ''],
[['admin' => true], ''],
Expand All @@ -39,11 +22,9 @@ public static function getSeriesQueryCases(): array
{
return [
[[], 'json'],
[[], 'xml'],
[[], 'XML'],
[['id' => '8010876e-1dce-4d38-ab8d-24b956e3d8b7'], ''],
[['episodes' => true], ''],
[['sort' => 'DATE_CREATED_DESC'], ''],
[['sort' => 'created desc'], ''],
[['offset' => 1], ''],
[['limit' => 1], ''],
[['admin' => true], ''],
Expand Down
10 changes: 0 additions & 10 deletions tests/Unit/OcSearchTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,6 @@ public function get_eposides($params, $format): void
$this->assertSame(200, $response['code'], 'Failure to search episode');
}

/**
* @test
* @dataProvider \Tests\DataProvider\SearchDataProvider::getLuceneQueryCases()
*/
public function get_lucenes($params, $format): void
{
$response = $this->ocSearch->getLucene($params, $format);
$this->assertSame(200, $response['code'], 'Failure to search lucene');
}

/**
* @test
* @dataProvider \Tests\DataProvider\SearchDataProvider::getSeriesQueryCases()
Expand Down

0 comments on commit 3bac9bf

Please sign in to comment.