lib/provider/ticket.rb in taskmapper-github-0.10.4 vs lib/provider/ticket.rb in taskmapper-github-0.11.0
- old
+ new
@@ -1,24 +1,22 @@
module TaskMapper::Provider
module Github
# Ticket class for taskmapper-github
-
+
class Ticket < TaskMapper::Provider::Base::Ticket
-
- @@allowed_states = %w{open close}
- attr_accessor :prefix_options
+
# declare needed overloaded methods here
-
+
def initialize(*object)
if object.first
object = object.first
unless object.is_a? Hash
hash = {:id => object.number,
- :status => object.state,
- :description => object.body,
- :user => object.user,
- :project_id => object.project_id}
+ :status => object.state,
+ :description => object.body,
+ :user => object.user,
+ :project_id => object.project_id}
else
hash = object
end
super hash
end
@@ -33,25 +31,25 @@
end
def description
self.body
end
-
+
def description=(val)
self.body = val
end
-
+
def author
- self.user.respond_to?('login') ? self.user.login : self.user
+ github_user
end
def requestor
- self.user.respond_to?('login') ? self.user.login : self.user
+ github_user
end
def assignee
- self.user.respond_to?('login') ? self.user.login : self.user
+ github_user
end
def self.find_by_id(project_id, number)
issue = TaskMapper::Provider::Github.api.issue(project_id, number)
issue.merge!(:project_id => project_id)
@@ -62,13 +60,14 @@
issues = self.find_all(project_id)
search_by_attribute(issues, attributes)
end
def self.find_all(project_id)
+ current_time = Time.now.httpdate
issues = []
- issues += TaskMapper::Provider::Github.api.issues(project_id)
- issues += TaskMapper::Provider::Github.api.issues(project_id, {:state => "closed"})
+ issues = Array(TaskMapper::Provider::Github.api.issues(project_id, :since => current_time))
+ issues += TaskMapper::Provider::Github.api.issues(project_id, {:state => "closed"}) unless issues.empty?
issues.collect do |issue|
issue.merge!(:project_id => project_id)
Ticket.new issue
end
end
@@ -111,9 +110,14 @@
Ticket.new(project_id, TaskMapper::Provider::Github.api.close_issue(project_id, number))
end
def comment!(attributes)
Comment.create(project_id, number, attributes)
+ end
+
+ private
+ def github_user
+ self.user.login || self.user
end
end
end
end