getGetContactsLimit(); if($rpcRequest->containsParameter('limit')) { $limit = (int)$rpcRequest->getParameter('limit'); if($limit < 1) { return $rpcRequest->produceError(StandardError::RPC_INVALID_ARGUMENTS, 'Invalid limit, must be greater than 0'); } $limit = min($limit, Configuration::getPoliciesConfiguration()->getGetContactsLimit()); } $page = 0; if($rpcRequest->containsParameter('page')) { $page = (int)$rpcRequest->getParameter('page'); if($page < 0) { return $rpcRequest->produceError(StandardError::RPC_INVALID_ARGUMENTS, 'Invalid page, must be greater than or equal to 0'); } $page = max($page, 0); } try { $contacts = ContactManager::getContacts($request->getPeer(), $limit, $page); } catch(DatabaseOperationException $e) { throw new StandardRpcException('Failed to get contacts', StandardError::INTERNAL_SERVER_ERROR, $e); } return $rpcRequest->produceResponse(array_map(function($contact) {return $contact->toStandard();}, $contacts)); } }