Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/diffusion/conduit/DiffusionInternalCommitSearchConduitAPIMethod.php
12242 views
1
<?php
2
3
final class DiffusionInternalCommitSearchConduitAPIMethod
4
extends PhabricatorSearchEngineAPIMethod {
5
6
public function getAPIMethodName() {
7
return 'internal.commit.search';
8
}
9
10
public function newSearchEngine() {
11
return new DiffusionInternalCommitSearchEngine();
12
}
13
14
public function getMethodSummary() {
15
return pht('Read raw information about commits.');
16
}
17
18
protected function newConduitCallProxyClient(ConduitAPIRequest $request) {
19
$viewer = $request->getViewer();
20
21
$constraints = $request->getValue('constraints');
22
if (is_array($constraints)) {
23
$repository_phids = idx($constraints, 'repositoryPHIDs');
24
} else {
25
$repository_phids = array();
26
}
27
28
$repository_phid = null;
29
if (is_array($repository_phids)) {
30
if (phutil_is_natural_list($repository_phids)) {
31
if (count($repository_phids) === 1) {
32
$value = head($repository_phids);
33
if (is_string($value)) {
34
$repository_phid = $value;
35
}
36
}
37
}
38
}
39
40
if ($repository_phid === null) {
41
throw new Exception(
42
pht(
43
'This internal method must be invoked with a "repositoryPHIDs" '.
44
'constraint with exactly one value.'));
45
}
46
47
$repository = id(new PhabricatorRepositoryQuery())
48
->setViewer($viewer)
49
->withPHIDs(array($repository_phid))
50
->executeOne();
51
if (!$repository) {
52
return array();
53
}
54
55
return $repository->newConduitClientForRequest($request);
56
}
57
58
}
59
60