@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at upstream/main 44 lines 1.3 kB view raw
1<?php 2 3final class FeedPublisherHTTPWorker extends FeedPushWorker { 4 5 protected function doWork() { 6 if (PhabricatorEnv::getEnvConfig('phabricator.silent')) { 7 // Don't invoke hooks in silent mode. 8 return; 9 } 10 11 $story = $this->loadFeedStory(); 12 $data = $story->getStoryData(); 13 14 $uri = idx($this->getTaskData(), 'uri'); 15 $valid_uris = PhabricatorEnv::getEnvConfig('feed.http-hooks'); 16 if (!in_array($uri, $valid_uris)) { 17 throw new PhabricatorWorkerPermanentFailureException(); 18 } 19 20 $post_data = array( 21 'storyID' => $data->getID(), 22 'storyType' => $data->getStoryType(), 23 'storyData' => $data->getStoryData(), 24 'storyAuthorPHID' => $data->getAuthorPHID(), 25 'storyText' => $story->renderText(), 26 'epoch' => $data->getEpoch(), 27 ); 28 29 // NOTE: We're explicitly using "http_build_query()" here because the 30 // "storyData" parameter may be a nested object with arbitrary nested 31 // sub-objects. 32 $post_data = http_build_query($post_data, '', '&'); 33 34 id(new HTTPSFuture($uri, $post_data)) 35 ->setMethod('POST') 36 ->setTimeout(30) 37 ->resolvex(); 38 } 39 40 public function getWaitBeforeRetry(PhabricatorWorkerTask $task) { 41 return max($task->getFailureCount(), 1) * 60; 42 } 43 44}