diff options
Diffstat (limited to 'app/Controller/Webhook.php')
-rw-r--r-- | app/Controller/Webhook.php | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/app/Controller/Webhook.php b/app/Controller/Webhook.php new file mode 100644 index 00000000..8a81a0c4 --- /dev/null +++ b/app/Controller/Webhook.php @@ -0,0 +1,61 @@ +<?php + +namespace Controller; + +/** + * Webhook controller + * + * @package controller + * @author Frederic Guillot + */ +class Webhook extends Base +{ + /** + * Webhook to create a task + * + * @access public + */ + public function task() + { + if ($this->config->get('webhooks_token') !== $this->request->getStringParam('token')) { + $this->response->text('Not Authorized', 401); + } + + $defaultProject = $this->project->getFirst(); + + $values = array( + 'title' => $this->request->getStringParam('title'), + 'description' => $this->request->getStringParam('description'), + 'color_id' => $this->request->getStringParam('color_id'), + 'project_id' => $this->request->getIntegerParam('project_id', $defaultProject['id']), + 'owner_id' => $this->request->getIntegerParam('owner_id'), + 'column_id' => $this->request->getIntegerParam('column_id'), + 'category_id' => $this->request->getIntegerParam('category_id'), + ); + + list($valid,) = $this->taskValidator->validateCreation($values); + + if ($valid && $this->task->create($values)) { + $this->response->text('OK'); + } + + $this->response->text('FAILED'); + } + + /** + * Handle Github webhooks + * + * @access public + */ + public function github() + { + if ($this->config->get('webhooks_token') !== $this->request->getStringParam('token')) { + $this->response->text('Not Authorized', 401); + } + + $this->githubWebhook->parsePayload( + $this->request->getHeader('X-Github-Event'), + $this->request->getBody() + ); + } +} |