From 959f526cb476dd86e1a8e98f14cc5657229aa4d2 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Sun, 27 Sep 2020 13:41:28 -0400 Subject: [PATCH] Add page size parameter to search - Update API call documentation --- docs/Protocol.md | 8 +++++--- src/classes/Controllers/Api/Search.php | 4 +++- src/classes/Controllers/Web/Search.php | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/Protocol.md b/docs/Protocol.md index ec2ffca..35d397b 100644 --- a/docs/Protocol.md +++ b/docs/Protocol.md @@ -11,14 +11,16 @@ Redirects to the base URL of a random server with open registration policy and a ## Search ``` -GET /search[/account_type]?q=... +GET /search[/account_type]?q=...[&page=...][&limit=...] Accept: application/json ``` -Parameters: +URI Parameter: +- `account_type` (optional): An arbitrary account type string. Expected values are `all`, `people`, `news`, `organization` and `forum`. Default is `all`. +Query parameters: - `q`: The search query. -- `account_type` (optional): An arbitrary account type string. Currently supported are `all`, `people` and `forum`. Default is `all`. - `page` (optional): The page number, default is 1. +- `limit` (optional): The page size, default is 20, max is 100. Returns a JSON structure containing a paginated list profiles matching the search query and the optional account type. diff --git a/src/classes/Controllers/Api/Search.php b/src/classes/Controllers/Api/Search.php index 7e05e4f..bfe1e9c 100644 --- a/src/classes/Controllers/Api/Search.php +++ b/src/classes/Controllers/Api/Search.php @@ -37,7 +37,9 @@ class Search public function render(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args): \Slim\Http\Response { - $pager = new Pager($this->l10n, $request, 20); + $limit = min(100, filter_input(INPUT_GET, 'limit', FILTER_SANITIZE_NUMBER_INT) ?: 20); + + $pager = new Pager($this->l10n, $request, $limit); $originalQuery = $query = filter_input(INPUT_GET, 'q'); diff --git a/src/classes/Controllers/Web/Search.php b/src/classes/Controllers/Web/Search.php index db8e332..8949441 100644 --- a/src/classes/Controllers/Web/Search.php +++ b/src/classes/Controllers/Web/Search.php @@ -47,7 +47,9 @@ class Search extends BaseController public function render(\Slim\Http\Request $request, \Slim\Http\Response $response, array $args): array { - $pager = new Pager($this->l10n, $request, 20); + $limit = min(100, filter_input(INPUT_GET, 'limit', FILTER_SANITIZE_NUMBER_INT) ?: 20); + + $pager = new Pager($this->l10n, $request, $limit); $originalQuery = $query = $request->getParam('q', ''); $field = $request->getParam('field', '');