Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/feed/worker/FeedPublisherHTTPWorker.php
12241 views
1
<?php
2
3
final 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
}
45
46