diff --git a/appinfo/routes.php b/appinfo/routes.php index 2544b350e..859a1828b 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -34,6 +34,7 @@ // LocalController ['name' => 'Local#circles', 'url' => '/circles', 'verb' => 'GET'], + ['name' => 'Local#probeCircles', 'url' => '/probecircles', 'verb' => 'GET'], ['name' => 'Local#create', 'url' => '/circles', 'verb' => 'POST'], ['name' => 'Local#destroy', 'url' => '/circles/{circleId}', 'verb' => 'DELETE'], ['name' => 'Local#search', 'url' => '/search', 'verb' => 'GET'], diff --git a/lib/Controller/LocalController.php b/lib/Controller/LocalController.php index 280710af6..96b1cd5ec 100644 --- a/lib/Controller/LocalController.php +++ b/lib/Controller/LocalController.php @@ -443,6 +443,34 @@ public function circles(int $limit = -1, int $offset = 0): DataResponse { } + /** + * @NoAdminRequired + * + * @param int $limit + * @param int $offset + * + * @return DataResponse + * @throws OCSException + */ + public function probeCircles(int $limit = -1, int $offset = 0): DataResponse { + try { + $this->setCurrentFederatedUser(); + + $probe = new CircleProbe(); + $probe->filterHiddenCircles() + ->filterBackendCircles() + ->addDetail(BasicProbe::DETAILS_POPULATION) + ->setItemsLimit($limit) + ->setItemsOffset($offset); + + return new DataResponse($this->serializeArray($this->circleService->probeCircles($probe))); + } catch (Exception $e) { + $this->e($e); + throw new OCSException($e->getMessage(), (int)$e->getCode()); + } + } + + /** * @NoAdminRequired *