Differential D21443 Diff 51080 src/applications/diffusion/conduit/DiffusionInternalCommitSearchConduitAPIMethod.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/conduit/DiffusionInternalCommitSearchConduitAPIMethod.php
- This file was added.
| <?php | |||||
| final class DiffusionInternalCommitSearchConduitAPIMethod | |||||
| extends PhabricatorSearchEngineAPIMethod { | |||||
| public function getAPIMethodName() { | |||||
| return 'internal.commit.search'; | |||||
| } | |||||
| public function newSearchEngine() { | |||||
| return new DiffusionInternalCommitSearchEngine(); | |||||
| } | |||||
| public function getMethodSummary() { | |||||
| return pht('Read raw information about commits.'); | |||||
| } | |||||
| protected function newConduitCallProxyClient(ConduitAPIRequest $request) { | |||||
| $viewer = $request->getViewer(); | |||||
| $constraints = $request->getValue('constraints'); | |||||
| if (is_array($constraints)) { | |||||
| $repository_phids = idx($constraints, 'repositoryPHIDs'); | |||||
| } else { | |||||
| $repository_phids = array(); | |||||
| } | |||||
| $repository_phid = null; | |||||
| if (is_array($repository_phids)) { | |||||
| if (phutil_is_natural_list($repository_phids)) { | |||||
| if (count($repository_phids) === 1) { | |||||
| $value = head($repository_phids); | |||||
| if (is_string($value)) { | |||||
| $repository_phid = $value; | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| if ($repository_phid === null) { | |||||
| throw new Exception( | |||||
| pht( | |||||
| 'This internal method must be invoked with a "repositoryPHIDs" '. | |||||
| 'constraint with exactly one value.')); | |||||
| } | |||||
| $repository = id(new PhabricatorRepositoryQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withPHIDs(array($repository_phid)) | |||||
| ->executeOne(); | |||||
| if (!$repository) { | |||||
| return array(); | |||||
| } | |||||
| return $repository->newConduitClientForRequest($request); | |||||
| } | |||||
| } | |||||