Changeset View
Changeset View
Standalone View
Standalone View
src/aphront/handler/PhabricatorRateLimitRequestExceptionHandler.php
- This file was added.
| <?php | |||||
| final class PhabricatorRateLimitRequestExceptionHandler | |||||
| extends PhabricatorRequestExceptionHandler { | |||||
| public function getRequestExceptionHandlerPriority() { | |||||
| return 300000; | |||||
| } | |||||
| public function getRequestExceptionHandlerDescription() { | |||||
| return pht( | |||||
| 'Handles action rate limiting exceptions which occur when a user '. | |||||
| 'does something too frequently.'); | |||||
| } | |||||
| public function canHandleRequestException( | |||||
| AphrontRequest $request, | |||||
| Exception $ex) { | |||||
| if (!$this->isPhabricatorSite($request)) { | |||||
| return false; | |||||
| } | |||||
| return ($ex instanceof PhabricatorSystemActionRateLimitException); | |||||
| } | |||||
| public function handleRequestException( | |||||
| AphrontRequest $request, | |||||
| Exception $ex) { | |||||
| $viewer = $this->getViewer($request); | |||||
| return id(new AphrontDialogView()) | |||||
| ->setTitle(pht('Slow Down!')) | |||||
| ->setUser($viewer) | |||||
| ->setErrors(array(pht('You are being rate limited.'))) | |||||
| ->appendParagraph($ex->getMessage()) | |||||
| ->appendParagraph($ex->getRateExplanation()) | |||||
| ->addCancelButton('/', pht('Okaaaaaaaaaaaaaay...')); | |||||
| } | |||||
| } | |||||