Path: blob/master/src/applications/herald/controller/HeraldWebhookTestController.php
12256 views
<?php12final class HeraldWebhookTestController3extends HeraldWebhookController {45public function handleRequest(AphrontRequest $request) {6$viewer = $this->getViewer();78$hook = id(new HeraldWebhookQuery())9->setViewer($viewer)10->withIDs(array($request->getURIData('id')))11->requireCapabilities(12array(13PhabricatorPolicyCapability::CAN_VIEW,14PhabricatorPolicyCapability::CAN_EDIT,15))16->executeOne();17if (!$hook) {18return new Aphront404Response();19}2021$v_object = null;22$e_object = null;23$errors = array();24if ($request->isFormPost()) {2526$v_object = $request->getStr('object');27if (!strlen($v_object)) {28$object = $hook;29} else {30$objects = id(new PhabricatorObjectQuery())31->setViewer($viewer)32->withNames(array($v_object))33->execute();34if ($objects) {35$object = head($objects);36} else {37$e_object = pht('Invalid');38$errors[] = pht('Specified object could not be loaded.');39}40}4142if (!$errors) {43$xaction_query =44PhabricatorApplicationTransactionQuery::newQueryForObject($object);4546$xactions = $xaction_query47->withObjectPHIDs(array($object->getPHID()))48->setViewer($viewer)49->setLimit(10)50->execute();5152$request = HeraldWebhookRequest::initializeNewWebhookRequest($hook)53->setObjectPHID($object->getPHID())54->setTriggerPHIDs(array($viewer->getPHID()))55->setIsTestAction(true)56->setTransactionPHIDs(mpull($xactions, 'getPHID'))57->save();5859$request->queueCall();6061$next_uri = $hook->getURI().'request/'.$request->getID().'/';6263return id(new AphrontRedirectResponse())->setURI($next_uri);64}65}6667$instructions = <<<EOREMARKUP68Optionally, choose an object to generate test data for (like `D123` or `T234`).6970The 10 most recent transactions for the object will be submitted to the webhook.71EOREMARKUP;7273$form = id(new AphrontFormView())74->setViewer($viewer)75->appendControl(76id(new AphrontFormTextControl())77->setLabel(pht('Object'))78->setName('object')79->setError($e_object)80->setValue($v_object));8182return $this->newDialog()83->setErrors($errors)84->setWidth(AphrontDialogView::WIDTH_FORM)85->setTitle(pht('New Test Request'))86->appendParagraph(new PHUIRemarkupView($viewer, $instructions))87->appendForm($form)88->addCancelButton($hook->getURI())89->addSubmitButton(pht('Test Webhook'));90}919293}949596