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_story(id)
Alias for: get_task_by_id
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