diff options
author | Z.J. van de Weg <git@zjvandeweg.nl> | 2016-12-09 10:37:36 +0100 |
---|---|---|
committer | Z.J. van de Weg <git@zjvandeweg.nl> | 2016-12-09 10:37:36 +0100 |
commit | bd97816bd2d13b0697ae3e7d98d483451bae04ca (patch) | |
tree | e6c5a40a6a7caaa6f5e1faafd5e8f4ac2dd43a45 | |
parent | 10167c0e1c3d1ca15faddeacc1c8ed907cd8dc93 (diff) | |
download | gitlab-ce-zj-create-slack-service.tar.gz |
Create Slack Slash command servicezj-create-slack-service
-rw-r--r-- | app/models/project.rb | 1 | ||||
-rw-r--r-- | app/models/project_services/slack_slash_commands_service.rb | 49 | ||||
-rw-r--r-- | app/models/service.rb | 1 |
3 files changed, 51 insertions, 0 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 590885c0177..fefdd62eecd 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -94,6 +94,7 @@ class Project < ActiveRecord::Base has_one :asana_service, dependent: :destroy has_one :gemnasium_service, dependent: :destroy has_one :mattermost_slash_commands_service, dependent: :destroy + has_one :slack_slash_commands_service, dependent: :destroy has_one :slack_service, dependent: :destroy has_one :buildkite_service, dependent: :destroy has_one :bamboo_service, dependent: :destroy diff --git a/app/models/project_services/slack_slash_commands_service.rb b/app/models/project_services/slack_slash_commands_service.rb new file mode 100644 index 00000000000..9c66f95eef9 --- /dev/null +++ b/app/models/project_services/slack_slash_commands_service.rb @@ -0,0 +1,49 @@ +class SlackSlashCommandsService < ChatService + include TriggersHelper + + prop_accessor :token + + def can_test? + false + end + + def title + 'Slack Slash Command' + end + + def description + "Perform common operations on GitLab in Slack" + end + + def to_param + 'slack_slash_commands' + end + + def fields + [ + { type: 'text', name: 'token', placeholder: '' } + ] + end + + def trigger(params) + return nil unless valid_token?(params[:token]) + + user = find_chat_user(params) + unless user + url = authorize_chat_name_url(params) + return Gitlab::ChatCommands::Presenters::Access.new(url).authorize + end + + Gitlab::ChatCommands::Command.new(project, user, params).execute + end + + private + + def find_chat_user(params) + ChatNames::FindUserService.new(self, params).execute + end + + def authorize_chat_name_url(params) + ChatNames::AuthorizeUserService.new(self, params).execute + end +end diff --git a/app/models/service.rb b/app/models/service.rb index 0c36acfc1b7..96ce4bd6368 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -220,6 +220,7 @@ class Service < ActiveRecord::Base pushover redmine slack + slack_slash_commands teamcity ] end |