Path: blob/master/src/applications/differential/conduit/DifferentialParseCommitMessageConduitAPIMethod.php
12256 views
<?php12final class DifferentialParseCommitMessageConduitAPIMethod3extends DifferentialConduitAPIMethod {45public function getAPIMethodName() {6return 'differential.parsecommitmessage';7}89public function getMethodDescription() {10return pht('Parse commit messages for Differential fields.');11}1213protected function defineParamTypes() {14return array(15'corpus' => 'required string',16'partial' => 'optional bool',17);18}1920protected function defineReturnType() {21return 'nonempty dict';22}2324protected function execute(ConduitAPIRequest $request) {25$viewer = $this->getViewer();2627$parser = DifferentialCommitMessageParser::newStandardParser($viewer);2829$is_partial = $request->getValue('partial');30if ($is_partial) {31$parser->setRaiseMissingFieldErrors(false);32}3334$corpus = $request->getValue('corpus');35if ($corpus === null || !strlen($corpus)) {36throw new Exception(pht('Field "corpus" must be non-empty.'));37}38$field_map = $parser->parseFields($corpus);3940$errors = $parser->getErrors();41$xactions = $parser->getTransactions();4243$revision_id_value = idx(44$field_map,45DifferentialRevisionIDCommitMessageField::FIELDKEY);46$revision_id_valid_domain = PhabricatorEnv::getProductionURI('');4748return array(49'errors' => $errors,50'fields' => $field_map,51'revisionIDFieldInfo' => array(52'value' => $revision_id_value,53'validDomain' => $revision_id_valid_domain,54),55'transactions' => $xactions,56);57}5859}606162