57719d34d3
Instead of only exposing a User to slash commands we now also expose the ChatName object that the User object is retrieved from. This is necessary for GitLab Chatops as we need for example the user ID of the chat user.
48 lines
960 B
Ruby
48 lines
960 B
Ruby
module Gitlab
|
|
module SlashCommands
|
|
class BaseCommand
|
|
QUERY_LIMIT = 5
|
|
|
|
def self.match(_text)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
def self.help_message
|
|
raise NotImplementedError
|
|
end
|
|
|
|
def self.available?(_project)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
def self.allowed?(_user, _ability)
|
|
true
|
|
end
|
|
|
|
def self.can?(object, action, subject)
|
|
Ability.allowed?(object, action, subject)
|
|
end
|
|
|
|
def execute(_)
|
|
raise NotImplementedError
|
|
end
|
|
|
|
def collection
|
|
raise NotImplementedError
|
|
end
|
|
|
|
attr_accessor :project, :current_user, :params, :chat_name
|
|
|
|
def initialize(project, chat_name, params = {})
|
|
@project, @current_user, @params = project, chat_name.user, params.dup
|
|
@chat_name = chat_name
|
|
end
|
|
|
|
private
|
|
|
|
def find_by_iid(iid)
|
|
collection.find_by(iid: iid)
|
|
end
|
|
end
|
|
end
|
|
end
|