Class: PivotalTrackerCli::Api

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

Class Method Summary collapse

Class Method Details

.get_all_users_for_project(project_id, api_token) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/api.rb', line 3

def self.get_all_users_for_project(project_id, api_token)
  response = HTTParty.get("https://www.pivotaltracker.com/services/v5/projects/#{project_id}/memberships",
                          headers: {
                              'X-TrackerToken': api_token
                          }
  )

  return unless response.success?

  member_map = {}

  response.parsed_response.map do |member|
    member_map[member['person']['username']] = { id: member['person']['id'], name: member['person']['name'] }
  end

  member_map
end

.get_backlog_for_project(project_id, api_token, limit = 3) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/api.rb', line 68

def self.get_backlog_for_project(project_id, api_token, limit=3)

  endpoint = "https://www.pivotaltracker.com/services/v5/projects/#{project_id}/iterations?scope=current_backlog&limit=#{limit}"

  response = HTTParty.get(endpoint,
                          headers: {
                              'X-TrackerToken': api_token
                          })

  stories = []

  response.parsed_response.each do |iteration|
    iteration['stories'].each do |story|
      stories.push(OpenStruct.new(story))
    end
  end
  stories
end

.get_current_stories_for_user(project_id, api_token, usernames) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/api.rb', line 46

def self.get_current_stories_for_user(project_id, api_token, usernames)
  search_term = usernames.map do |username|
    "owner:\"#{username}\""
  end.join(' OR ')


  response = HTTParty
                 .get("https://www.pivotaltracker.com/services/v5/projects/#{project_id}/search",
                      query: {
                          query: search_term
                      },
                      headers: {
                          'X-TrackerToken': api_token
                      })

  story_list = []

  response.parsed_response['stories']['stories'].map { |story| story_list.push(OpenStruct.new(story)) } if response.success?

  story_list
end

.get_story_by_id(project_id, api_token, story_id) ⇒ Object



21
22
23
24
25
26
27
28
29
# File 'lib/api.rb', line 21

def self.get_story_by_id(project_id, api_token, story_id)
  response = HTTParty
                 .get("https://www.pivotaltracker.com/services/v5/projects/#{project_id}/stories/#{story_id.to_s}",
                      headers: {
                          'X-TrackerToken': api_token
                      })

  OpenStruct.new(response.parsed_response) if response.success?
end

.update_story_state(project_id, api_token, id, state, owner_ids) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/api.rb', line 31

def self.update_story_state(project_id, api_token, id, state, owner_ids)
  response = HTTParty.put(
      "https://www.pivotaltracker.com/services/v5/projects/#{project_id}/stories/#{id.to_s}",
      headers: {
          'X-TrackerToken': api_token
      },
      body: {
          'current_state': state,
          'owner_ids': owner_ids
      }
  )

  "Story ##{id} successfully #{state}." if response.success?
end