Class: PT::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/pt/client.rb

Constant Summary collapse

STORY_FIELDS =
':default,requested_by,owners,tasks,comments(:default,person,file_attachments)'

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(token) ⇒ Client

Returns a new instance of Client.



17
18
19
20
# File 'lib/pt/client.rb', line 17

def initialize(token)
  @client = TrackerApi::Client.new(token: token)
  @project = nil
end

Class Method Details

.get_api_token(email, password) ⇒ Object



11
12
13
14
15
# File 'lib/pt/client.rb', line 11

def self.get_api_token(email, password)
  PivotalAPI::Me.retrieve(email, password)
rescue RestClient::Unauthorized
  raise PT::InputError.new("Bad email/password combination.")
end

Instance Method Details

#add_label(project, task, label) ⇒ Object



135
136
137
138
139
# File 'lib/pt/client.rb', line 135

def add_label(project, task, label)
  task = get_story(project, task.id)
  task.add_label(label)
  task.save
end

#assign_task(project, task, owner) ⇒ Object



130
131
132
133
# File 'lib/pt/client.rb', line 130

def assign_task(project, task, owner)
  task = get_story(project, task.id)
  task.add_owner(owner)
end

#comment_task(project, task, comment) ⇒ Object



141
142
143
144
# File 'lib/pt/client.rb', line 141

def comment_task(project, task, comment)
  task = get_story(project, task.id)
  task.create_comment(text: comment)
end

#create_task(project, name, owner_ids, task_type) ⇒ Object



146
147
148
# File 'lib/pt/client.rb', line 146

def create_task(project, name, owner_ids, task_type)
  project.create_story(:name => name, :story_type => task_type, owner_ids: owner_ids)
end

#create_task_with_description(project, name, owner, task_type, description) ⇒ Object



150
151
152
# File 'lib/pt/client.rb', line 150

def create_task_with_description(project, name, owner, task_type, description)
  project.create_story(:name => name, :story_type => task_type, :description => description)
end

#estimate_task(project, task, points) ⇒ Object



124
125
126
127
128
# File 'lib/pt/client.rb', line 124

def estimate_task(project, task, points)
  task = get_story(project, task.id)
  task.estimate = points
  task.save
end

#find_member(project, query) ⇒ Object



107
108
109
110
111
# File 'lib/pt/client.rb', line 107

def find_member(project, query)
  memberships = project.memberships.detect do |m|
    m.person.name.downcase.start_with?(query.downcase) || m.person.initials.downcase == query.downcase
  end
end

#get_activities(project, limit) ⇒ Object



43
44
45
# File 'lib/pt/client.rb', line 43

def get_activities(project, limit)
  project.activity
end

#get_all_stories(project, user_name) ⇒ Object



97
98
99
# File 'lib/pt/client.rb', line 97

def get_all_stories(project, user_name)
  project.stories limit: 20, fields: STORY_FIELDS
end

#get_current_iteration(project) ⇒ Object



39
40
41
# File 'lib/pt/client.rb', line 39

def get_current_iteration(project)
  PivotalTracker::Iteration.current(project)
end

#get_member(project, query) ⇒ Object



102
103
104
105
# File 'lib/pt/client.rb', line 102

def get_member(project, query)
  member = project.memberships.select{ |m| m.person.name.downcase.start_with?(query.downcase) || m.person.initials.downcase == query.downcase }
  member.empty? ? nil : member.first
end

#get_members(project) ⇒ Object



113
114
115
# File 'lib/pt/client.rb', line 113

def get_members(project)
  project.memberships fields: ':default,person'
end

#get_membership(project, email) ⇒ Object



31
32
33
# File 'lib/pt/client.rb', line 31

def get_membership(project, email)
  PivotalTracker::Membership.all(project).select{ |m| m.email == email }.first
end

#get_my_infoObject



35
36
37
# File 'lib/pt/client.rb', line 35

def get_my_info
  @client.me
end

#get_my_open_tasks(project, user_name) ⇒ Object



64
65
66
# File 'lib/pt/client.rb', line 64

def get_my_open_tasks(project, user_name)
  project.stories filter: "owner:#{user_name}", fields: STORY_FIELDS
end

#get_my_tasks_to_accept(project, user_name) ⇒ Object



85
86
87
# File 'lib/pt/client.rb', line 85

def get_my_tasks_to_accept(project, user_name)
  project.stories filter: "owner:#{user_name} -state:accepted", limit: 50, fields: STORY_FIELDS
end

#get_my_tasks_to_deliver(project, user_name) ⇒ Object



81
82
83
# File 'lib/pt/client.rb', line 81

def get_my_tasks_to_deliver(project, user_name)
  project.stories filter: "owner:#{user_name} -state:delivered,accepted,rejected", limit: 50, fields: STORY_FIELDS
end

#get_my_tasks_to_estimate(project, user_name) ⇒ Object



68
69
70
# File 'lib/pt/client.rb', line 68

def get_my_tasks_to_estimate(project, user_name)
  project.stories( filter: "owner:#{user_name} type:feature estimate:-1", fields: STORY_FIELDS)
end

#get_my_tasks_to_finish(project, user_name) ⇒ Object



77
78
79
# File 'lib/pt/client.rb', line 77

def get_my_tasks_to_finish(project, user_name)
  project.stories filter: "owner:#{user_name} -state:finished,delivered,accepted,rejected", limit: 50, fields: STORY_FIELDS
end

#get_my_tasks_to_reject(project, user_name) ⇒ Object



89
90
91
# File 'lib/pt/client.rb', line 89

def get_my_tasks_to_reject(project, user_name)
  project.stories filter: "owner:#{user_name} -state:rejected", limit: 50, fields: STORY_FIELDS
end

#get_my_tasks_to_start(project, user_name) ⇒ Object



72
73
74
75
# File 'lib/pt/client.rb', line 72

def get_my_tasks_to_start(project, user_name)
  tasks = project.stories filter: "owner:#{user_name} state:unscheduled,rejected,unstarted", limit: 50, fields: STORY_FIELDS
  tasks.reject{ |t| (t.story_type == 'feature') && (t.estimate == -1) }
end

#get_my_work(project, user_name) ⇒ Object



51
52
53
# File 'lib/pt/client.rb', line 51

def get_my_work(project, user_name)
  project.stories(filter: "owner:#{user_name} -state:accepted", limit: 50, fields: STORY_FIELDS)
end

#get_project(project_id) ⇒ Object



22
23
24
25
# File 'lib/pt/client.rb', line 22

def get_project(project_id)
  project = @client.project(project_id)
  project
end

#get_projectsObject



27
28
29
# File 'lib/pt/client.rb', line 27

def get_projects
  @client.projects
end

#get_task_by_id(project, id) ⇒ Object Also known as: get_story



59
60
61
# File 'lib/pt/client.rb', line 59

def get_task_by_id(project, id)
  project.story(id, fields: STORY_FIELDS)
end

#get_tasks_to_assign(project) ⇒ Object



93
94
95
# File 'lib/pt/client.rb', line 93

def get_tasks_to_assign(project)
  project.stories filter: "-state:accepted", limit: 50
end

#get_work(project) ⇒ Object



47
48
49
# File 'lib/pt/client.rb', line 47

def get_work(project)
  project.stories(filter: 'state:unscheduled,unstarted,started', fields: STORY_FIELDS )
end

#mark_task_as(project, task, state) ⇒ Object



118
119
120
121
122
# File 'lib/pt/client.rb', line 118

def mark_task_as(project, task, state)
  task = get_story(project, task.id)
  task.current_state = state
  task.save
end

#search_for_story(project, query) ⇒ Object



55
56
57
# File 'lib/pt/client.rb', line 55

def search_for_story(project, query)
  project.stories(filter: query.to_s ,fields: STORY_FIELDS)
end