50 lines
		
	
	
		
			958 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			958 B
		
	
	
	
		
			Ruby
		
	
	
	
module Gitlab
 | 
						|
  module ChatCommands
 | 
						|
    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
 | 
						|
 | 
						|
      def initialize(project, user, params = {})
 | 
						|
        @project, @current_user, @params = project, user, params.dup
 | 
						|
      end
 | 
						|
 | 
						|
      private
 | 
						|
 | 
						|
      def find_by_iid(iid)
 | 
						|
        resource = collection.find_by(iid: iid)
 | 
						|
 | 
						|
        readable?(resource) ? resource : nil
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |