From 7864685cfdb64d2ef6497a445f0d8ed96762e4bf Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Thu, 7 Jan 2016 21:05:23 -0500 Subject: Move Gitlab webhook to an external plugin --- app/Integration/GitlabWebhook.php | 298 -------------------------------------- 1 file changed, 298 deletions(-) delete mode 100644 app/Integration/GitlabWebhook.php (limited to 'app/Integration/GitlabWebhook.php') diff --git a/app/Integration/GitlabWebhook.php b/app/Integration/GitlabWebhook.php deleted file mode 100644 index 5e0aa59d..00000000 --- a/app/Integration/GitlabWebhook.php +++ /dev/null @@ -1,298 +0,0 @@ -project_id = $project_id; - } - - /** - * Parse events - * - * @access public - * @param array $payload Gitlab event - * @return boolean - */ - public function parsePayload(array $payload) - { - switch ($this->getType($payload)) { - case self::TYPE_PUSH: - return $this->handlePushEvent($payload); - case self::TYPE_ISSUE; - return $this->handleIssueEvent($payload); - case self::TYPE_COMMENT; - return $this->handleCommentEvent($payload); - } - - return false; - } - - /** - * Get event type - * - * @access public - * @param array $payload Gitlab event - * @return string - */ - public function getType(array $payload) - { - if (empty($payload['object_kind'])) { - return ''; - } - - switch ($payload['object_kind']) { - case 'issue': - return self::TYPE_ISSUE; - case 'note': - return self::TYPE_COMMENT; - case 'push': - return self::TYPE_PUSH; - default: - return ''; - } - } - - /** - * Parse push event - * - * @access public - * @param array $payload Gitlab event - * @return boolean - */ - public function handlePushEvent(array $payload) - { - foreach ($payload['commits'] as $commit) { - $this->handleCommit($commit); - } - - return true; - } - - /** - * Parse commit - * - * @access public - * @param array $commit Gitlab commit - * @return boolean - */ - public function handleCommit(array $commit) - { - $task_id = $this->task->getTaskIdFromText($commit['message']); - - if (empty($task_id)) { - return false; - } - - $task = $this->taskFinder->getById($task_id); - - if (empty($task)) { - return false; - } - - if ($task['project_id'] != $this->project_id) { - return false; - } - - $this->container['dispatcher']->dispatch( - self::EVENT_COMMIT, - new GenericEvent(array( - 'task_id' => $task_id, - 'commit_message' => $commit['message'], - 'commit_url' => $commit['url'], - 'comment' => $commit['message']."\n\n[".t('Commit made by @%s on Gitlab', $commit['author']['name']).']('.$commit['url'].')' - ) + $task) - ); - - return true; - } - - /** - * Parse issue event - * - * @access public - * @param array $payload Gitlab event - * @return boolean - */ - public function handleIssueEvent(array $payload) - { - switch ($payload['object_attributes']['action']) { - case 'open': - return $this->handleIssueOpened($payload['object_attributes']); - case 'close': - return $this->handleIssueClosed($payload['object_attributes']); - case 'reopen': - return $this->handleIssueReopened($payload['object_attributes']); - } - - return false; - } - - /** - * Handle new issues - * - * @access public - * @param array $issue Issue data - * @return boolean - */ - public function handleIssueOpened(array $issue) - { - $event = array( - 'project_id' => $this->project_id, - 'reference' => $issue['id'], - 'title' => $issue['title'], - 'description' => $issue['description']."\n\n[".t('Gitlab Issue').']('.$issue['url'].')', - ); - - $this->container['dispatcher']->dispatch( - self::EVENT_ISSUE_OPENED, - new GenericEvent($event) - ); - - return true; - } - - /** - * Handle issue reopening - * - * @access public - * @param array $issue Issue data - * @return boolean - */ - public function handleIssueReopened(array $issue) - { - $task = $this->taskFinder->getByReference($this->project_id, $issue['id']); - - if (! empty($task)) { - $event = array( - 'project_id' => $this->project_id, - 'task_id' => $task['id'], - 'reference' => $issue['id'], - ); - - $this->container['dispatcher']->dispatch( - self::EVENT_ISSUE_REOPENED, - new GenericEvent($event) - ); - - return true; - } - - return false; - } - - - /** - * Handle issue closing - * - * @access public - * @param array $issue Issue data - * @return boolean - */ - public function handleIssueClosed(array $issue) - { - $task = $this->taskFinder->getByReference($this->project_id, $issue['id']); - - if (! empty($task)) { - $event = array( - 'project_id' => $this->project_id, - 'task_id' => $task['id'], - 'reference' => $issue['id'], - ); - - $this->container['dispatcher']->dispatch( - self::EVENT_ISSUE_CLOSED, - new GenericEvent($event) - ); - - return true; - } - - return false; - } - - /** - * Parse comment issue events - * - * @access public - * @param array $payload Event data - * @return boolean - */ - public function handleCommentEvent(array $payload) - { - if (! isset($payload['issue'])) { - return false; - } - - $task = $this->taskFinder->getByReference($this->project_id, $payload['issue']['id']); - - if (! empty($task)) { - $user = $this->user->getByUsername($payload['user']['username']); - - if (! empty($user) && ! $this->projectPermission->isAssignable($this->project_id, $user['id'])) { - $user = array(); - } - - $event = array( - 'project_id' => $this->project_id, - 'reference' => $payload['object_attributes']['id'], - 'comment' => $payload['object_attributes']['note']."\n\n[".t('By @%s on Gitlab', $payload['user']['username']).']('.$payload['object_attributes']['url'].')', - 'user_id' => ! empty($user) ? $user['id'] : 0, - 'task_id' => $task['id'], - ); - - $this->container['dispatcher']->dispatch( - self::EVENT_ISSUE_COMMENT, - new GenericEvent($event) - ); - - return true; - } - - return false; - } -} -- cgit v1.2.3