mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-24 14:30:56 +01:00
552c546689
Summary: Ref T11114. I want to move this step away from custom fields. To start with, isolate all the parsing in one class with a clearer API boundary. Next, I'll make this class use new field objects to perform parsing, without CustomField interactions. Test Plan: Created and edited revisions from the CLI, using valid and invalid commit messages. Reviewers: chad Reviewed By: chad Maniphest Tasks: T11114 Differential Revision: https://secure.phabricator.com/D17055
57 lines
1.5 KiB
PHP
57 lines
1.5 KiB
PHP
<?php
|
|
|
|
final class DifferentialParseCommitMessageConduitAPIMethod
|
|
extends DifferentialConduitAPIMethod {
|
|
|
|
public function getAPIMethodName() {
|
|
return 'differential.parsecommitmessage';
|
|
}
|
|
|
|
public function getMethodDescription() {
|
|
return pht('Parse commit messages for Differential fields.');
|
|
}
|
|
|
|
protected function defineParamTypes() {
|
|
return array(
|
|
'corpus' => 'required string',
|
|
'partial' => 'optional bool',
|
|
);
|
|
}
|
|
|
|
protected function defineReturnType() {
|
|
return 'nonempty dict';
|
|
}
|
|
|
|
protected function execute(ConduitAPIRequest $request) {
|
|
$viewer = $this->getViewer();
|
|
|
|
$parser = DifferentialCommitMessageParser::newStandardParser($viewer);
|
|
|
|
$is_partial = $request->getValue('partial');
|
|
if ($is_partial) {
|
|
$parser->setRaiseMissingFieldErrors(false);
|
|
}
|
|
|
|
$corpus = $request->getValue('corpus');
|
|
$field_map = $parser->parseFields($corpus);
|
|
|
|
$errors = $parser->getErrors();
|
|
|
|
// grab some extra information about the Differential Revision: field...
|
|
$revision_id_field = new DifferentialRevisionIDField();
|
|
$revision_id_value = idx(
|
|
$field_map,
|
|
$revision_id_field->getFieldKeyForConduit());
|
|
$revision_id_valid_domain = PhabricatorEnv::getProductionURI('');
|
|
|
|
return array(
|
|
'errors' => $errors,
|
|
'fields' => $field_map,
|
|
'revisionIDFieldInfo' => array(
|
|
'value' => $revision_id_value,
|
|
'validDomain' => $revision_id_valid_domain,
|
|
),
|
|
);
|
|
}
|
|
|
|
}
|