summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZ.J. van de Weg <zegerjan@gitlab.com>2016-10-06 15:56:27 +0200
committerZ.J. van de Weg <zegerjan@gitlab.com>2016-10-10 20:12:02 +0200
commita012701162df40e22e920633019865bdddc4cfa3 (patch)
tree3e3837b1977bb0a278af6c0d0c6b375a8a660537
parentaa02de2c82cfec394fbbf54554ab97bff1401a0c (diff)
downloadgitlab-ce-a012701162df40e22e920633019865bdddc4cfa3.tar.gz
Support for creation of issues
-rw-r--r--app/services/mattermost/issue_service.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/app/services/mattermost/issue_service.rb b/app/services/mattermost/issue_service.rb
index 9be715ac6c6..dc26039ef41 100644
--- a/app/services/mattermost/issue_service.rb
+++ b/app/services/mattermost/issue_service.rb
@@ -1,7 +1,33 @@
module Mattermost
class IssueService < BaseService
+ def execute
+ if params[:text].start_with?('create')
+ create_issue
+ else
+ super
+ end
+ end
+
private
+ def create_issue
+ issue = Issues::CreateService.new(project, current_user, issue_params).execute
+
+ byebug
+ if issue.valid?
+ generate_response(issue)
+ else
+ issue_create_error(issue.errors.full_messages)
+ end
+ end
+
+ def issue_create_error(errors)
+ {
+ response_type: :ephemeral,
+ text: "An error occured creating your issue: #{errors}"
+ }
+ end
+
def collection
project.issues
end
@@ -11,5 +37,16 @@ module Mattermost
url_helpers.
namespace_project_issue_url(project.namespace, project, issue)
end
+
+ def issue_params
+ match = params[:text].match(/\Acreate (?<title>.+$)/)
+
+ return issue_create_error("No title given") unless match
+
+ {
+ title: match[:title],
+ description: params[:text].gsub(/\Acreate .+$\s*/, ''),
+ }
+ end
end
end