diff --git a/src/applications/differential/conduit/ConduitAPI_differential_getdiff_Method.php b/src/applications/differential/conduit/ConduitAPI_differential_getdiff_Method.php index e2efa11310..2c864a43ab 100644 --- a/src/applications/differential/conduit/ConduitAPI_differential_getdiff_Method.php +++ b/src/applications/differential/conduit/ConduitAPI_differential_getdiff_Method.php @@ -1,75 +1,80 @@ 'optional id', 'diff_id' => 'optional id', ); } public function defineReturnType() { return 'nonempty dict'; } public function defineErrorTypes() { return array( 'ERR_BAD_DIFF' => 'No such diff exists.', ); } public function shouldRequireAuthentication() { return !PhabricatorEnv::getEnvConfig('differential.anonymous-access'); } protected function execute(ConduitAPIRequest $request) { - $diff = null; - $revision_ids = array(); - $diff_ids = array(); + $diff_id = $request->getValue('diff_id'); + // If we have a revision ID, we need the most recent diff. Figure that out + // without loading all the attached data. $revision_id = $request->getValue('revision_id'); if ($revision_id) { - $revision_ids = array($revision_id); + $diffs = id(new DifferentialDiffQuery()) + ->setViewer($request->getUser()) + ->withRevisionIDs(array($revision_id)) + ->execute(); + if ($diffs) { + $diff_id = head($diffs)->getID(); + } else { + throw new ConduitException('ERR_BAD_DIFF'); + } } - $diff_id = $request->getValue('diff_id'); + + $diff = null; if ($diff_id) { - $diff_ids = array($diff_id); - } - if ($diff_ids || $revision_ids) { $diff = id(new DifferentialDiffQuery()) ->setViewer($request->getUser()) - ->withIDs($diff_ids) - ->withRevisionIDs($revision_ids) + ->withIDs(array($diff_id)) ->needChangesets(true) ->needArcanistProjects(true) ->executeOne(); } if (!$diff) { throw new ConduitException('ERR_BAD_DIFF'); } return $diff->getDiffDict(); } } diff --git a/src/applications/differential/conduit/ConduitAPI_differential_querydiffs_Method.php b/src/applications/differential/conduit/ConduitAPI_differential_querydiffs_Method.php index 991d7c09a6..25f233e947 100644 --- a/src/applications/differential/conduit/ConduitAPI_differential_querydiffs_Method.php +++ b/src/applications/differential/conduit/ConduitAPI_differential_querydiffs_Method.php @@ -1,45 +1,45 @@ 'optional list', - 'revison_ids' => 'optional list', + 'revisonIDs' => 'optional list', ); } public function defineErrorTypes() { return array(); } public function defineReturnType() { return 'list'; } protected function execute(ConduitAPIRequest $request) { $ids = $request->getValue('ids', array()); - $revision_ids = $request->getValue('revision_ids', array()); + $revision_ids = $request->getValue('revisionIDs', array()); $diffs = array(); $diff_dicts = array(); if ($ids || $revision_ids) { $diffs = id(new DifferentialDiffQuery()) ->setViewer($request->getUser()) ->withIDs($ids) ->withRevisionIDs($revision_ids) ->needChangesets(true) ->needArcanistProjects(true) ->execute(); } return mpull($diffs, 'getDiffDict', 'getID'); } }