Page MenuHomePhabricator

D16592.diff
No OneTemporary

D16592.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -919,6 +919,7 @@
'DrydockAuthorizationListView' => 'applications/drydock/view/DrydockAuthorizationListView.php',
'DrydockAuthorizationPHIDType' => 'applications/drydock/phid/DrydockAuthorizationPHIDType.php',
'DrydockAuthorizationQuery' => 'applications/drydock/query/DrydockAuthorizationQuery.php',
+ 'DrydockAuthorizationSearchConduitAPIMethod' => 'applications/drydock/conduit/DrydockAuthorizationSearchConduitAPIMethod.php',
'DrydockAuthorizationSearchEngine' => 'applications/drydock/query/DrydockAuthorizationSearchEngine.php',
'DrydockAuthorizationViewController' => 'applications/drydock/controller/DrydockAuthorizationViewController.php',
'DrydockBlueprint' => 'applications/drydock/storage/DrydockBlueprint.php',
@@ -5468,12 +5469,14 @@
'DrydockAuthorization' => array(
'DrydockDAO',
'PhabricatorPolicyInterface',
+ 'PhabricatorConduitResultInterface',
),
'DrydockAuthorizationAuthorizeController' => 'DrydockController',
'DrydockAuthorizationListController' => 'DrydockController',
'DrydockAuthorizationListView' => 'AphrontView',
'DrydockAuthorizationPHIDType' => 'PhabricatorPHIDType',
'DrydockAuthorizationQuery' => 'DrydockQuery',
+ 'DrydockAuthorizationSearchConduitAPIMethod' => 'PhabricatorSearchEngineAPIMethod',
'DrydockAuthorizationSearchEngine' => 'PhabricatorApplicationSearchEngine',
'DrydockAuthorizationViewController' => 'DrydockController',
'DrydockBlueprint' => array(
diff --git a/src/applications/drydock/conduit/DrydockAuthorizationSearchConduitAPIMethod.php b/src/applications/drydock/conduit/DrydockAuthorizationSearchConduitAPIMethod.php
new file mode 100644
--- /dev/null
+++ b/src/applications/drydock/conduit/DrydockAuthorizationSearchConduitAPIMethod.php
@@ -0,0 +1,18 @@
+<?php
+
+final class DrydockAuthorizationSearchConduitAPIMethod
+ extends PhabricatorSearchEngineAPIMethod {
+
+ public function getAPIMethodName() {
+ return 'drydock.authorization.search';
+ }
+
+ public function newSearchEngine() {
+ return new DrydockAuthorizationSearchEngine();
+ }
+
+ public function getMethodSummary() {
+ return pht('Retrieve information about Drydock authorizations.');
+ }
+
+}
diff --git a/src/applications/drydock/query/DrydockAuthorizationSearchEngine.php b/src/applications/drydock/query/DrydockAuthorizationSearchEngine.php
--- a/src/applications/drydock/query/DrydockAuthorizationSearchEngine.php
+++ b/src/applications/drydock/query/DrydockAuthorizationSearchEngine.php
@@ -30,7 +30,9 @@
$query = new DrydockAuthorizationQuery();
$blueprint = $this->getBlueprint();
- $query->withBlueprintPHIDs(array($blueprint->getPHID()));
+ if ($blueprint) {
+ $query->withBlueprintPHIDs(array($blueprint->getPHID()));
+ }
return $query;
}
@@ -38,15 +40,46 @@
protected function buildQueryFromParameters(array $map) {
$query = $this->newQuery();
+ if ($map['blueprintPHIDs']) {
+ $query->withBlueprintPHIDs($map['blueprintPHIDs']);
+ }
+
+ if ($map['objectPHIDs']) {
+ $query->withObjectPHIDs($map['objectPHIDs']);
+ }
+
return $query;
}
protected function buildCustomSearchFields() {
- return array();
+ return array(
+ id(new PhabricatorSearchDatasourceField())
+ ->setLabel(pht('Blueprints'))
+ ->setKey('blueprintPHIDs')
+ ->setConduitParameterType(new ConduitPHIDListParameterType())
+ ->setDescription(pht('Search authorizations for specific blueprints.'))
+ ->setAliases(array('blueprint', 'blueprints'))
+ ->setDatasource(new DrydockBlueprintDatasource()),
+ id(new PhabricatorPHIDsSearchField())
+ ->setLabel(pht('Objects'))
+ ->setKey('objectPHIDs')
+ ->setDescription(pht('Search authorizations from specific objects.'))
+ ->setAliases(array('object', 'objects')),
+ );
+ }
+
+ protected function getHiddenFields() {
+ return array(
+ 'blueprintPHIDs',
+ 'objectPHIDs',
+ );
}
protected function getURI($path) {
$blueprint = $this->getBlueprint();
+ if (!$blueprint) {
+ throw new PhutilInvalidStateException('setBlueprint');
+ }
$id = $blueprint->getID();
return "/drydock/blueprint/{$id}/authorizations/".$path;
}
diff --git a/src/applications/drydock/storage/DrydockAuthorization.php b/src/applications/drydock/storage/DrydockAuthorization.php
--- a/src/applications/drydock/storage/DrydockAuthorization.php
+++ b/src/applications/drydock/storage/DrydockAuthorization.php
@@ -2,7 +2,8 @@
final class DrydockAuthorization extends DrydockDAO
implements
- PhabricatorPolicyInterface {
+ PhabricatorPolicyInterface,
+ PhabricatorConduitResultInterface {
const OBJECTAUTH_ACTIVE = 'active';
const OBJECTAUTH_INACTIVE = 'inactive';
@@ -204,4 +205,52 @@
}
+/* -( PhabricatorConduitResultInterface )---------------------------------- */
+
+
+ public function getFieldSpecificationsForConduit() {
+ return array(
+ id(new PhabricatorConduitSearchFieldSpecification())
+ ->setKey('blueprintPHID')
+ ->setType('phid')
+ ->setDescription(pht(
+ 'PHID of the blueprint this request was made for.')),
+ id(new PhabricatorConduitSearchFieldSpecification())
+ ->setKey('blueprintAuthorizationState')
+ ->setType('map<string, wild>')
+ ->setDescription(pht('Authorization state of this request.')),
+ id(new PhabricatorConduitSearchFieldSpecification())
+ ->setKey('objectPHID')
+ ->setType('phid')
+ ->setDescription(pht(
+ 'PHID of the object which requested authorization.')),
+ id(new PhabricatorConduitSearchFieldSpecification())
+ ->setKey('objectAuthorizationState')
+ ->setType('map<string, wild>')
+ ->setDescription(pht('Authorization state of the requesting object.')),
+ );
+ }
+
+ public function getFieldValuesForConduit() {
+ $blueprint_state = $this->getBlueprintAuthorizationState();
+ $object_state = $this->getObjectAuthorizationState();
+ return array(
+ 'blueprintPHID' => $this->getBlueprintPHID(),
+ 'blueprintAuthorizationState' => array(
+ 'value' => $blueprint_state,
+ 'name' => self::getBlueprintStateName($blueprint_state),
+ ),
+ 'objectPHID' => $this->getObjectPHID(),
+ 'objectAuthorizationState' => array(
+ 'value' => $object_state,
+ 'name' => self::getObjectStateName($object_state),
+ ),
+ );
+ }
+
+ public function getConduitSearchAttachments() {
+ return array(
+ );
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Thu, May 9, 6:34 PM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6271598
Default Alt Text
D16592.diff (6 KB)

Event Timeline