Sha256: 3e02517e3bbb2d800e6111b9e219cc8f7af41dbbe1a3b9f819be8cf94f896e04

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

module Octopi
  class Issue < Base
    include Resource
    
    find_path "/issues/list/:query"
    resource_path "/user/show/:id"
    
    attr_accessor :repository
    
    # Finds all issues for a given Repository
    #
    # You can provide the user and repo parameters as
    # String or as User and Repository objects. When repo
    # is provided as a Repository object, user is superfluous.
    # 
    # If no state is given, "open" is assumed.
    #
    # Sample usage:
    #
    #   find_all(repo, :state => "closed") # repo must be an object
    #   find_all("octopi", :user => "fcoury") # user must be provided
    #   find_all(:user => "fcoury", :repo => "octopi") # state defaults to open
    #
    def self.find_all(*args)
      repo = args.first
      user, repo_name, opts = extract_user_repository(*args)
      state = opts[:state] || "open"
      state.downcase! if state
      
      raise "State should be either 'open' or 'closed'" unless ['open', 'closed'].include? state
      
      issues = super user, repo_name, state
      issues.each { |i| i.repository = repo } if repo.is_a? Repository
      issues
    end
  
    # TODO: Make find use hashes like find_all
    def self.find(*args)
      if args.last.is_a?(Issue)
        commit = args.pop
        super "#{issue.number}"
      else
        user, name, number = *args
        user = user.login if user.is_a? User
        name = repo.name  if name.is_a? Repository
        super user, name, number
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fcoury-octopi-0.0.5 lib/octopi/issue.rb