1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-20 01:08:50 +02:00

Add differential.getrawdiff to Conduit

Test Plan: Confirm the API returns a single flat result with a unified git diff.

Reviewers: epriestley

Reviewed By: epriestley

CC: Korvin, aran, charles

Differential Revision: https://secure.phabricator.com/D7199
This commit is contained in:
David Cramer 2013-10-02 17:03:53 -07:00 committed by epriestley
parent 3c34cdce5a
commit eb548f5af7
2 changed files with 60 additions and 1 deletions

View file

@ -133,6 +133,7 @@ phutil_register_library_map(array(
'ConduitAPI_differential_getcommitmessage_Method' => 'applications/differential/conduit/ConduitAPI_differential_getcommitmessage_Method.php',
'ConduitAPI_differential_getcommitpaths_Method' => 'applications/differential/conduit/ConduitAPI_differential_getcommitpaths_Method.php',
'ConduitAPI_differential_getdiff_Method' => 'applications/differential/conduit/ConduitAPI_differential_getdiff_Method.php',
'ConduitAPI_differential_getrawdiff_Method' => 'applications/differential/conduit/ConduitAPI_differential_getrawdiff_Method.php',
'ConduitAPI_differential_getrevision_Method' => 'applications/differential/conduit/ConduitAPI_differential_getrevision_Method.php',
'ConduitAPI_differential_getrevisioncomments_Method' => 'applications/differential/conduit/ConduitAPI_differential_getrevisioncomments_Method.php',
'ConduitAPI_differential_markcommitted_Method' => 'applications/differential/conduit/ConduitAPI_differential_markcommitted_Method.php',
@ -2223,6 +2224,7 @@ phutil_register_library_map(array(
'ConduitAPI_differential_getcommitmessage_Method' => 'ConduitAPIMethod',
'ConduitAPI_differential_getcommitpaths_Method' => 'ConduitAPIMethod',
'ConduitAPI_differential_getdiff_Method' => 'ConduitAPIMethod',
'ConduitAPI_differential_getrawdiff_Method' => 'ConduitAPIMethod',
'ConduitAPI_differential_getrevision_Method' => 'ConduitAPIMethod',
'ConduitAPI_differential_getrevisioncomments_Method' => 'ConduitAPI_differential_Method',
'ConduitAPI_differential_markcommitted_Method' => 'ConduitAPIMethod',
@ -3003,7 +3005,11 @@ phutil_register_library_map(array(
'PhabricatorApplicationUninstallController' => 'PhabricatorApplicationsController',
'PhabricatorApplicationXHProf' => 'PhabricatorApplication',
'PhabricatorApplicationsController' => 'PhabricatorController',
'PhabricatorApplicationsListController' => 'PhabricatorApplicationsController',
'PhabricatorApplicationsListController' =>
array(
0 => 'PhabricatorApplicationsController',
1 => 'PhabricatorApplicationSearchResultsControllerInterface',
),
'PhabricatorAsanaConfigOptions' => 'PhabricatorApplicationConfigOptions',
'PhabricatorAuditAddCommentController' => 'PhabricatorAuditController',
'PhabricatorAuditComment' =>

View file

@ -0,0 +1,53 @@
<?php
final class ConduitAPI_differential_getrawdiff_Method
extends ConduitAPIMethod {
public function getMethodDescription() {
return pht("Retrieve a raw diff");
}
public function defineParamTypes() {
return array(
'diffID' => 'required diffID',
);
}
public function defineReturnType() {
return 'nonempty string';
}
public function defineErrorTypes() {
return array(
'ERR_NOT_FOUND' => pht('Diff not found.'),
);
}
protected function execute(ConduitAPIRequest $request) {
$diff_id = $request->getValue('diffID');
$viewer = $request->getUser();
$diff = id(new DifferentialDiffQuery())
->withIDs(array($diff_id))
->setViewer($viewer)
->executeOne();
if (!$diff) {
throw new ConduitException('ERR_NOT_FOUND');
}
$changesets = $diff->loadChangesets();
foreach ($changesets as $changeset) {
$changeset->attachHunks(
$changeset->loadHunks());
}
$renderer = new DifferentialRawDiffRenderer();
$renderer->setChangesets($changesets);
$renderer->setViewer($viewer);
$renderer->setFormat('git');
return $renderer->buildPatch();
}
}