67fde38806
Also added tests, and moved the slack test to a better location.
49 lines
927 B
Ruby
49 lines
927 B
Ruby
class MattermostSlashCommandsService < ChatService
|
|
include TriggersHelper
|
|
|
|
prop_accessor :token
|
|
|
|
def can_test?
|
|
false
|
|
end
|
|
|
|
def title
|
|
'Mattermost Command'
|
|
end
|
|
|
|
def description
|
|
"Perform common operations on GitLab in Mattermost"
|
|
end
|
|
|
|
def to_param
|
|
'mattermost_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 Mattermost::Presenter.authorize_chat_name(url)
|
|
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
|