Page MenuHomePhabricator

D10063.diff
No OneTemporary

D10063.diff

diff --git a/src/applications/feed/controller/PhabricatorFeedDetailController.php b/src/applications/feed/controller/PhabricatorFeedDetailController.php
--- a/src/applications/feed/controller/PhabricatorFeedDetailController.php
+++ b/src/applications/feed/controller/PhabricatorFeedDetailController.php
@@ -25,6 +25,15 @@
return id(new AphrontPlainTextResponse())->setContent($text);
}
+ if ($request->getStr('hook')) {
+ $data = FeedPublisherHTTPWorker::getHookDataForStory($story);
+
+ $json = new PhutilJSON();
+ $json_data = $json->encodeFormatted($data);
+
+ return id(new AphrontPlainTextResponse())->setContent($json_data);
+ }
+
$feed = array($story);
$builder = new PhabricatorFeedBuilder($feed);
$builder->setUser($user);
diff --git a/src/applications/feed/worker/FeedPublisherHTTPWorker.php b/src/applications/feed/worker/FeedPublisherHTTPWorker.php
--- a/src/applications/feed/worker/FeedPublisherHTTPWorker.php
+++ b/src/applications/feed/worker/FeedPublisherHTTPWorker.php
@@ -4,9 +4,32 @@
protected function doWork() {
$story = $this->loadFeedStory();
- $data = $story->getStoryData();
+ $post_data = self::getHookDataForStory($story);
$uri = idx($this->getTaskData(), 'uri');
+ id(new HTTPSFuture($uri, $post_data))
+ ->setMethod('POST')
+ ->setTimeout(30)
+ ->resolvex();
+ }
+
+ public function getWaitBeforeRetry(PhabricatorWorkerTask $task) {
+ return max($task->getFailureCount(), 1) * 60;
+ }
+
+ public static function getHookDataForStory(PhabricatorFeedStory $story) {
+ $data = $story->getStoryData();
+
+ $object_phid = $story->getPrimaryObjectPHID();
+ $chronokey = $story->getChronologicalKey();
+
+ $handle = id(new PhabricatorHandleQuery())
+ ->setViewer(PhabricatorUser::getOmnipotentUser())
+ ->withPHIDs(array($object_phid))
+ ->executeOne();
+
+ $object_uri = PhabricatorEnv::getProductionURI($handle->getURI());
+ $story_uri = PhabricatorEnv::getProductionURI('/feed/'.$chronokey.'/');
$post_data = array(
'storyID' => $data->getID(),
@@ -15,16 +38,14 @@
'storyAuthorPHID' => $data->getAuthorPHID(),
'storyText' => $story->renderText(),
'epoch' => $data->getEpoch(),
+
+ 'objectPHID' => $object_phid,
+ 'objectURI' => $object_uri,
+ 'storyURI' => $story_uri,
);
- id(new HTTPSFuture($uri, $post_data))
- ->setMethod('POST')
- ->setTimeout(30)
- ->resolvex();
+ return $post_data;
}
- public function getWaitBeforeRetry(PhabricatorWorkerTask $task) {
- return max($task->getFailureCount(), 1) * 60;
- }
}

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 16, 9:52 PM (1 w, 21 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7727916
Default Alt Text
D10063.diff (2 KB)

Event Timeline