summaryrefslogtreecommitdiff
path: root/app/services/mattermost/commands
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/mattermost/commands')
-rw-r--r--app/services/mattermost/commands/base_service.rb8
-rw-r--r--app/services/mattermost/commands/issue_create_service.rb16
-rw-r--r--app/services/mattermost/commands/issue_search_service.rb4
-rw-r--r--app/services/mattermost/commands/issue_service.rb6
-rw-r--r--app/services/mattermost/commands/issue_show_service.rb5
-rw-r--r--app/services/mattermost/commands/merge_request_search_service.rb6
-rw-r--r--app/services/mattermost/commands/merge_request_service.rb8
-rw-r--r--app/services/mattermost/commands/merge_request_show_service.rb7
8 files changed, 27 insertions, 33 deletions
diff --git a/app/services/mattermost/commands/base_service.rb b/app/services/mattermost/commands/base_service.rb
index 16bb92b9d0d..c6bfd7c9ab4 100644
--- a/app/services/mattermost/commands/base_service.rb
+++ b/app/services/mattermost/commands/base_service.rb
@@ -17,13 +17,17 @@ module Mattermost
private
- def find_by_iid(iid)
+ def present(resource)
+ Mattermost::Presenter.present(resource)
+ end
+
+ def find_by_iid
resource = collection.find_by(iid: iid)
readable?(resource) ? resource : nil
end
- def search
+ def search_results
collection.search(query).limit(QUERY_LIMIT).select do |resource|
readable?(resource)
end
diff --git a/app/services/mattermost/commands/issue_create_service.rb b/app/services/mattermost/commands/issue_create_service.rb
index e52dad6f532..db3f868fc09 100644
--- a/app/services/mattermost/commands/issue_create_service.rb
+++ b/app/services/mattermost/commands/issue_create_service.rb
@@ -1,12 +1,20 @@
module Mattermost
module Commands
- class IssueShowService < Mattermost::Commands::BaseService
+ class IssueCreateService < IssueService
def execute
- return Mattermost::Messages::Issues.not_available unless available?
+ title, description = parse_command
- issue = find_by_iid(iid)
+ present Issues::CreateService.new(project, current_user, title: title, description: description).execute
+ end
+
+ private
+
+ def parse_command
+ match = params[:text].match(/\Aissue create (?<title>.*)\n*/)
+ title = match[:title]
+ description = match.post_match
- present issue
+ [title, description]
end
end
end
diff --git a/app/services/mattermost/commands/issue_search_service.rb b/app/services/mattermost/commands/issue_search_service.rb
index 358a891ae60..072cb8e2590 100644
--- a/app/services/mattermost/commands/issue_search_service.rb
+++ b/app/services/mattermost/commands/issue_search_service.rb
@@ -1,9 +1,7 @@
module Mattermost
module Commands
- class IssueShowService < IssueService
+ class IssueSearchService < IssueService
def execute
- return Mattermost::Messages::Issues.not_available unless available?
-
present search_results
end
end
diff --git a/app/services/mattermost/commands/issue_service.rb b/app/services/mattermost/commands/issue_service.rb
index 9ce2fac455b..d27dcda21c4 100644
--- a/app/services/mattermost/commands/issue_service.rb
+++ b/app/services/mattermost/commands/issue_service.rb
@@ -1,7 +1,7 @@
module Mattermost
module Commands
class IssueService < Mattermost::Commands::BaseService
- def available?
+ def self.available?(project)
project.issues_enabled? && project.default_issues_tracker?
end
@@ -12,10 +12,6 @@ module Mattermost
def readable?(issue)
can?(current_user, :read_issue, issue)
end
-
- def present
- Mattermost::Presenter.issue
- end
end
end
end
diff --git a/app/services/mattermost/commands/issue_show_service.rb b/app/services/mattermost/commands/issue_show_service.rb
index f8ca41b2992..100b2780d0e 100644
--- a/app/services/mattermost/commands/issue_show_service.rb
+++ b/app/services/mattermost/commands/issue_show_service.rb
@@ -2,10 +2,7 @@ module Mattermost
module Commands
class IssueShowService < IssueService
def execute
- return Mattermost::Messages.not_available unless available?
-
- issue = find_by_iid(iid)
- present issue
+ present find_by_iid
end
end
end
diff --git a/app/services/mattermost/commands/merge_request_search_service.rb b/app/services/mattermost/commands/merge_request_search_service.rb
index 842719685e4..f675320ddae 100644
--- a/app/services/mattermost/commands/merge_request_search_service.rb
+++ b/app/services/mattermost/commands/merge_request_search_service.rb
@@ -1,10 +1,8 @@
module Mattermost
module Commands
- class MergeRequestService < Mattermost::Commands::BaseService
+ class MergeRequestSearchService < MergeRequestService
def execute
- return Mattermost::Messages::MergeRequests.not_available unless available?
-
- Mattermost::Messages::IssuePresenter.present search_results
+ present search_results
end
end
end
diff --git a/app/services/mattermost/commands/merge_request_service.rb b/app/services/mattermost/commands/merge_request_service.rb
index 985ce649cac..8b81c9bbfd9 100644
--- a/app/services/mattermost/commands/merge_request_service.rb
+++ b/app/services/mattermost/commands/merge_request_service.rb
@@ -1,8 +1,8 @@
module Mattermost
module Commands
class MergeRequestService < Mattermost::Commands::BaseService
- def available?
- project.issues_enabled? && project.default_issues_tracker?
+ def self.available?(project)
+ project.merge_requests_enabled?
end
def collection
@@ -12,10 +12,6 @@ module Mattermost
def readable?(_)
can?(current_user, :read_merge_request, project)
end
-
- def present
- Mattermost::Presenter.merge_request
- end
end
end
end
diff --git a/app/services/mattermost/commands/merge_request_show_service.rb b/app/services/mattermost/commands/merge_request_show_service.rb
index 9d9cb0f50f6..c5b2850169a 100644
--- a/app/services/mattermost/commands/merge_request_show_service.rb
+++ b/app/services/mattermost/commands/merge_request_show_service.rb
@@ -1,11 +1,8 @@
module Mattermost
module Commands
- class MergeRequestShowService < Mattermost::Commands::BaseService
+ class MergeRequestShowService < MergeRequestService
def execute
- return Mattermost::Messages.not_available unless available?
-
- merge_request = find_by_iid(iid)
- present merge_request
+ present find_by_iid
end
end
end