mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-11 01:12:41 +01:00
156b156e77
Summary: Ref T7803. Ref T5873. I want to drive Conduit through more shared infrastructure, but can't currently add parameters automatically. Put a `getX()` around the `defineX()` methods so the parent can provide default behaviors. Also like 60% of methods don't define any special error types; don't require them to implement this method. I want to move away from this in general. Test Plan: - Ran `arc unit --everything`. - Called `conduit.query`. - Browsed Conduit UI. Reviewers: btrahan Reviewed By: btrahan Subscribers: hach-que, epriestley Maniphest Tasks: T5873, T7803 Differential Revision: https://secure.phabricator.com/D12380
73 lines
2 KiB
PHP
73 lines
2 KiB
PHP
<?php
|
|
|
|
final class NuanceCreateItemConduitAPIMethod extends NuanceConduitAPIMethod {
|
|
|
|
public function getAPIMethodName() {
|
|
return 'nuance.createitem';
|
|
}
|
|
|
|
public function getMethodDescription() {
|
|
return pht('Create a new item.');
|
|
}
|
|
|
|
protected function defineParamTypes() {
|
|
return array(
|
|
'requestorPHID' => 'required string',
|
|
'sourcePHID' => 'required string',
|
|
'ownerPHID' => 'optional string',
|
|
);
|
|
}
|
|
|
|
protected function defineReturnType() {
|
|
return 'nonempty dict';
|
|
}
|
|
|
|
protected function defineErrorTypes() {
|
|
return array(
|
|
'ERR-NO-REQUESTOR-PHID' => pht('Items must have a requestor.'),
|
|
'ERR-NO-SOURCE-PHID' => pht('Items must have a source.'),
|
|
);
|
|
}
|
|
|
|
protected function execute(ConduitAPIRequest $request) {
|
|
$source_phid = $request->getValue('sourcePHID');
|
|
$owner_phid = $request->getValue('ownerPHID');
|
|
$requestor_phid = $request->getValue('requestorPHID');
|
|
|
|
$user = $request->getUser();
|
|
|
|
$item = NuanceItem::initializeNewItem($user);
|
|
$xactions = array();
|
|
|
|
if ($source_phid) {
|
|
$xactions[] = id(new NuanceItemTransaction())
|
|
->setTransactionType(NuanceItemTransaction::TYPE_SOURCE)
|
|
->setNewValue($source_phid);
|
|
} else {
|
|
throw new ConduitException('ERR-NO-SOURCE-PHID');
|
|
}
|
|
|
|
if ($owner_phid) {
|
|
$xactions[] = id(new NuanceItemTransaction())
|
|
->setTransactionType(NuanceItemTransaction::TYPE_OWNER)
|
|
->setNewValue($owner_phid);
|
|
}
|
|
|
|
if ($requestor_phid) {
|
|
$xactions[] = id(new NuanceItemTransaction())
|
|
->setTransactionType(NuanceItemTransaction::TYPE_REQUESTOR)
|
|
->setNewValue($requestor_phid);
|
|
} else {
|
|
throw new ConduitException('ERR-NO-REQUESTOR-PHID');
|
|
}
|
|
|
|
$source = PhabricatorContentSource::newFromConduitRequest($request);
|
|
$editor = id(new NuanceItemEditor())
|
|
->setActor($user)
|
|
->setContentSource($source)
|
|
->applyTransactions($item, $xactions);
|
|
|
|
return $item->toDictionary();
|
|
}
|
|
|
|
}
|