class PT::Client
Constants
- STORY_FIELDS
Attributes
config[R]
project[R]
Public Class Methods
get_api_token(email, password)
click to toggle source
# File lib/pt/client.rb, line 12 def self.get_api_token(email, password) PivotalAPI::Me.retrieve(email, password) rescue RestClient::Unauthorized raise PT::InputError.new("Bad email/password combination.") end
new(token, local_config=nil)
click to toggle source
# File lib/pt/client.rb, line 18 def initialize(token, local_config=nil) @client = TrackerApi::Client.new(token: token) @config = local_config @project = @client.project(local_config[:project_id]) if local_config end
Public Instance Methods
add_label(task, label)
click to toggle source
# File lib/pt/client.rb, line 163 def add_label(task, label) task = get_story(task.id) task.add_label(label) task.save end
assign_task(task, owner)
click to toggle source
# File lib/pt/client.rb, line 158 def assign_task(task, owner) task = get_story(task.id) task.add_owner(owner) end
comment_task(task, comment)
click to toggle source
# File lib/pt/client.rb, line 169 def comment_task(task, comment) task = get_story(task.id) task.create_comment(text: comment) end
create_story(args)
click to toggle source
# File lib/pt/client.rb, line 174 def create_story(args) project.create_story(args) end
current_page(limit=nil)
click to toggle source
# File lib/pt/client.rb, line 30 def current_page(limit=nil) limit ||= @config[:limit] offset = @client.last_response.env.response_headers["X-Tracker-Pagination-Offset"] offset ? ((offset.to_f/limit)+1).to_i.ceil : 1 end
estimate_story(task, points)
click to toggle source
# File lib/pt/client.rb, line 152 def estimate_story(task, points) task = get_story(task.id) task.estimate = points task.save end
find_member(query)
click to toggle source
# File lib/pt/client.rb, line 135 def find_member(query) project.memberships.detect do |m| m.person.name.downcase.start_with?(query.downcase) || m.person.initials.downcase == query.downcase end end
get_activities()
click to toggle source
# File lib/pt/client.rb, line 58 def get_activities project.activity end
get_current_iteration(project)
click to toggle source
# File lib/pt/client.rb, line 54 def get_current_iteration(project) PivotalTracker::Iteration.current(project) end
get_member(query)
click to toggle source
# File lib/pt/client.rb, line 130 def get_member(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()
click to toggle source
# File lib/pt/client.rb, line 141 def get_members project.memberships fields: ':default,person' end
get_membership(email)
click to toggle source
# File lib/pt/client.rb, line 46 def get_membership(email) PivotalTracker::Membership.all(project).select{ |m| m.email == email }.first end
get_my_info()
click to toggle source
# File lib/pt/client.rb, line 50 def get_my_info @client.me end
get_my_open_tasks(params={})
click to toggle source
# File lib/pt/client.rb, line 80 def get_my_open_tasks(params={}) params[:filter] = "owner:#{config[:user_name]}" get_stories(params) end
get_my_work()
click to toggle source
# File lib/pt/client.rb, line 66 def get_my_work project.stories(filter: "owner:#{config[:user_name]} -state:accepted", limit: 50, fields: STORY_FIELDS) end
get_project(project_id)
click to toggle source
# File lib/pt/client.rb, line 37 def get_project(project_id) project = @client.project(project_id) project end
get_projects()
click to toggle source
# File lib/pt/client.rb, line 42 def get_projects @client.projects end
get_stories(params={})
click to toggle source
# File lib/pt/client.rb, line 121 def get_stories(params={}) limit = params[:limit] || config[:limit] || 10 page = params[:page] || 1 offset = (page-1)*limit filter = params[:filter] || '-state=accepted' project.stories limit: limit, fields: STORY_FIELDS, auto_paginate: false, offset: offset, filter: filter end
get_stories_to_accept(params={})
click to toggle source
# File lib/pt/client.rb, line 106 def get_stories_to_accept(params={}) params[:filter] = "owner:#{config[:user_name]} -state:accepted" get_stories(params) end
get_stories_to_assign(params={})
click to toggle source
# File lib/pt/client.rb, line 116 def get_stories_to_assign(params={}) params[:filter] = "-state:accepted" get_stories(params) end
get_stories_to_deliver(params={})
click to toggle source
# File lib/pt/client.rb, line 101 def get_stories_to_deliver(params={}) params[:filter] = "owner:#{config[:user_name]} -state:delivered,accepted,rejected" get_stories(params) end
get_stories_to_estimate(params={})
click to toggle source
# File lib/pt/client.rb, line 85 def get_stories_to_estimate(params={}) params[:filter] = "owner:#{config[:user_name]} type:feature estimate:-1" get_stories(params) end
get_stories_to_finish(params={})
click to toggle source
# File lib/pt/client.rb, line 96 def get_stories_to_finish(params={}) params[:filter] = "owner:#{config[:user_name]} -state:unscheduled,rejected" get_stories(params) end
get_stories_to_reject(params={})
click to toggle source
# File lib/pt/client.rb, line 111 def get_stories_to_reject(params={}) params[:filter] = "owner:#{config[:user_name]} -state:rejected" get_stories(params) end
get_stories_to_start(params={})
click to toggle source
# File lib/pt/client.rb, line 90 def get_stories_to_start(params={}) params[:filter] = "owner:#{config[:user_name]} type:feature,bug state:unscheduled,rejected,unstarted" tasks = get_stories(params) tasks.reject{ |t| (t.story_type == 'feature') && (!t.estimate) } end
get_task_by_id(id)
click to toggle source
# File lib/pt/client.rb, line 75 def get_task_by_id(id) project.story(id, fields: STORY_FIELDS) end
Also aliased as: get_story
get_work()
click to toggle source
# File lib/pt/client.rb, line 62 def get_work project.stories(filter: 'state:unscheduled,unstarted,started', fields: STORY_FIELDS ) end
mark_task_as(task, state)
click to toggle source
# File lib/pt/client.rb, line 146 def mark_task_as(task, state) task = get_story(task.id) task.current_state = state task.save end
search_for_story(query, params={})
click to toggle source
# File lib/pt/client.rb, line 70 def search_for_story(query, params={}) params[:filter] = "#{query}" get_stories(params) end
total_page(limit=nil)
click to toggle source
# File lib/pt/client.rb, line 24 def total_page(limit=nil) limit ||= @config[:limit] @total_record = @client.last_response.env.response_headers["X-Tracker-Pagination-Total"] @total_record ? (@total_record.to_f/limit).ceil : 1 end