diff --git a/src/FederationServer/Methods/Blacklist/ListBlacklist.php b/src/FederationServer/Methods/Blacklist/ListBlacklist.php new file mode 100644 index 0000000..f0a8a9c --- /dev/null +++ b/src/FederationServer/Methods/Blacklist/ListBlacklist.php @@ -0,0 +1,51 @@ +isBlacklistPublic() && $authenticatedOperator === null) + { + throw new RequestException('Unauthorized: You must be authenticated to list blacklist records', 401); + } + + $limit = (int) (FederationServer::getParameter('limit') ?? Configuration::getServerConfiguration()->getListBlacklistMaxItems()); + $page = (int) (FederationServer::getParameter('page') ?? 1); + + if($limit < 1 || $limit > Configuration::getServerConfiguration()->getListBlacklistMaxItems()) + { + $limit = Configuration::getServerConfiguration()->getListBlacklistMaxItems(); + } + + if($page < 1) + { + $page = 1; + } + + try + { + $blacklistRecords = BlacklistManager::getEntries($limit, $page); + } + catch (DatabaseOperationException $e) + { + throw new RequestException('Internal Server Error: Unable to retrieve blacklist records', 500, $e); + } + + self::successResponse(array_map(fn($evidence) => $evidence->toArray(), $blacklistRecords)); + } + } +