瀏覽代碼

Added per_page parameter to search api

Bailey Parker 10 年之前
父節點
當前提交
523fab1532
共有 1 個文件被更改,包括 13 次插入1 次删除
  1. 13 1
      src/Packagist/WebBundle/Controller/WebController.php

+ 13 - 1
src/Packagist/WebBundle/Controller/WebController.php

@@ -248,7 +248,16 @@ class WebController extends Controller
             }
 
             $paginator = new Pagerfanta(new SolariumAdapter($solarium, $select));
-            $paginator->setMaxPerPage(15);
+
+            $perPage = $req->query->getInt('per_page', 15);
+            if($perPage <= 0 || $perPage > 100) {
+                return new JsonResponse(array(
+                    'status' => 'error',
+                    'message' => 'The optional packages per_page parameter must be an integer between 1 and 100 (default: 15)',
+                ), 400);
+            }
+            $paginator->setMaxPerPage($perPage);
+
             $paginator->setCurrentPage($req->query->get('page', 1), false, true);
 
             $metadata = $this->getPackagesMetadata($paginator);
@@ -290,6 +299,9 @@ class WebController extends Controller
                     if ($typeFilter) {
                         $params['type'] = $typeFilter;
                     }
+                    if($perPage !== 15) {
+                        $params['per_page'] = $perPage;
+                    }
                     $result['next'] = $this->generateUrl('search', $params, true);
                 }