forked from phacility/phabricator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFeedPublisherHTTPWorker.php
44 lines (35 loc) · 1.28 KB
/
FeedPublisherHTTPWorker.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
final class FeedPublisherHTTPWorker extends FeedPushWorker {
protected function doWork() {
if (PhabricatorEnv::getEnvConfig('phabricator.silent')) {
// Don't invoke hooks in silent mode.
return;
}
$story = $this->loadFeedStory();
$data = $story->getStoryData();
$uri = idx($this->getTaskData(), 'uri');
$valid_uris = PhabricatorEnv::getEnvConfig('feed.http-hooks');
if (!in_array($uri, $valid_uris)) {
throw new PhabricatorWorkerPermanentFailureException();
}
$post_data = array(
'storyID' => $data->getID(),
'storyType' => $data->getStoryType(),
'storyData' => $data->getStoryData(),
'storyAuthorPHID' => $data->getAuthorPHID(),
'storyText' => $story->renderText(),
'epoch' => $data->getEpoch(),
);
// NOTE: We're explicitly using "http_build_query()" here because the
// "storyData" parameter may be a nested object with arbitrary nested
// sub-objects.
$post_data = http_build_query($post_data, '', '&');
id(new HTTPSFuture($uri, $post_data))
->setMethod('POST')
->setTimeout(30)
->resolvex();
}
public function getWaitBeforeRetry(PhabricatorWorkerTask $task) {
return max($task->getFailureCount(), 1) * 60;
}
}