Differential D14970 Diff 36173 src/applications/diffusion/conduit/DiffusionFileContentQueryConduitAPIMethod.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/diffusion/conduit/DiffusionFileContentQueryConduitAPIMethod.php
| Show All 21 Lines | return array( | ||||
| 'timeout' => 'optional int', | 'timeout' => 'optional int', | ||||
| 'byteLimit' => 'optional int', | 'byteLimit' => 'optional int', | ||||
| ); | ); | ||||
| } | } | ||||
| protected function getResult(ConduitAPIRequest $request) { | protected function getResult(ConduitAPIRequest $request) { | ||||
| $drequest = $this->getDiffusionRequest(); | $drequest = $this->getDiffusionRequest(); | ||||
| $file_query = DiffusionFileContentQuery::newFromDiffusionRequest($drequest) | $file_query = DiffusionFileContentQuery::newFromDiffusionRequest($drequest); | ||||
| ->setViewer($request->getUser()); | |||||
| $timeout = $request->getValue('timeout'); | $timeout = $request->getValue('timeout'); | ||||
| if ($timeout) { | if ($timeout) { | ||||
| $file_query->setTimeout($timeout); | $file_query->setTimeout($timeout); | ||||
| } | } | ||||
| $byte_limit = $request->getValue('byteLimit'); | $byte_limit = $request->getValue('byteLimit'); | ||||
| if ($byte_limit) { | if ($byte_limit) { | ||||
| $file_query->setByteLimit($byte_limit); | $file_query->setByteLimit($byte_limit); | ||||
| } | } | ||||
| $file_content = $file_query->loadFileContent(); | $content = $file_query->execute(); | ||||
| $text_list = $rev_list = $blame_dict = array(); | $too_slow = (bool)$file_query->getExceededTimeLimit(); | ||||
| $too_huge = (bool)$file_query->getExceededByteLimit(); | |||||
| $file_content | $file_phid = null; | ||||
| ->setBlameDict($blame_dict) | if (!$too_slow && !$too_huge) { | ||||
| ->setRevList($rev_list) | $file = $this->newFile($drequest, $content); | ||||
| ->setTextList($text_list); | $file_phid = $file->getPHID(); | ||||
| } | |||||
| return array( | |||||
| 'tooSlow' => $too_slow, | |||||
| 'tooHuge' => $too_huge, | |||||
| 'filePHID' => $file_phid, | |||||
| ); | |||||
| } | |||||
| private function newFile(DiffusionRequest $drequest, $content) { | |||||
| $path = $drequest->getPath(); | |||||
| $name = basename($path); | |||||
| $repository = $drequest->getRepository(); | |||||
| $repository_phid = $repository->getPHID(); | |||||
| $file = PhabricatorFile::buildFromFileDataOrHash( | |||||
| $content, | |||||
| array( | |||||
| 'name' => $name, | |||||
| 'ttl' => time() + phutil_units('48 hours in seconds'), | |||||
| 'viewPolicy' => PhabricatorPolicies::POLICY_NOONE, | |||||
| )); | |||||
| $unguarded = AphrontWriteGuard::beginScopedUnguardedWrites(); | |||||
| $file->attachToObject($repository_phid); | |||||
| unset($unguarded); | |||||
| return $file_content->toDictionary(); | return $file; | ||||
| } | } | ||||
| } | } | ||||