Class: PivotalAPI::Service

Inherits:
Object
  • Object
show all
Defined in:
lib/pivotal-tracker-api/service.rb

Class Method Summary collapse

Class Method Details

.activity(opts = {}) ⇒ Object

Raises:

  • (ArgumentError)


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/pivotal-tracker-api/service.rb', line 22

def activity(opts={})
  # opts:
  #  :project_id - REQUIRED - A valid pivotal project ID
  #  :story_id - OPTIONAL - A valid pivotal story ID. NOTE: Optional if requesting project activity. Required if requesting story activity.
  #  :fields - OPTIONAL - specific fields to ask pivotal to return for each activity
  #  :parameters - OPTIONAL - See list of parameters here https://www.pivotaltracker.com/help/api/rest/v5#Activity
  #
  #  Default Parameters: {limit: 20}
  
  raise ArgumentError.new("missing required key/value :project_id") unless opts[:project_id]
  
  project_id = opts[:project_id]
  opts[:parameters] = {} unless opts[:parameters]
  opts[:parameters][:limit] = 20 unless opts[:parameters][:limit]
  opts[:parameters][:fields] = opts[:fields] if opts[:fields] && opts[:parameters][:fields].nil?
  
  api_url = "/projects/#{project_id}/"
  api_url += "stories/#{opts[:story_id]}/" if opts[:story_id]
  api_url += "activity?"
  api_url.append_pivotal_params(opts[:parameters])
  
  puts "\n****** URL: #{api_url}\n\n"
  
  response = PivotalAPI::Client.get(api_url)
  json_activity = JSON.parse(response, {:symbolize_names => true})
  PivotalAPI::Activity.from_json(json_activity)
end

.comments(project_id, story, fields) ⇒ Object

Raises:

  • (ArgumentError)


50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/pivotal-tracker-api/service.rb', line 50

def comments(project_id, story, fields)        
  # opts:
  #  :project_id - REQUIRED - A valid pivotal project ID
  #  :story_id - REQUIRED - A valid pivotal story ID
  #  :fields - OPTIONAL - specific fields to ask pivotal to return for each activity
  #  :parameters - OPTIONAL - See list of parameters here https://www.pivotaltracker.com/help/api/rest/v5#Activity
  #
  #  Default Parameters: {limit: 20}
  
  raise ArgumentError.new("missing required key/value :project_id") unless opts[:project_id]
  raise ArgumentError.new("missing required key/value :story_id") unless opts[:story_id]
  
  project_id = opts[:project_id]
  story_id = opts[:story_id]
  opts[:parameters] = {} unless opts[:parameters]
  opts[:parameters][:limit] = 20 unless opts[:parameters][:limit]
  opts[:parameters][:fields] = opts[:fields] if opts[:fields] && opts[:parameters][:fields].nil?
  
  api_url = "/projects/#{project_id}/stories/#{story_id}/comments"
  api_url.append_pivotal_params(opts[:parameters])
  
  puts "\n****** URL: #{api_url}\n\n"
  
  response = PivotalAPI::Client.get_with_caching(api_url)
  json_comments = JSON.parse(response, {:symbolize_names => true})
  PivotalAPI::Comments.from_json(json_comments)
end

.iterations(opts = {}) ⇒ Object

Raises:

  • (ArgumentError)


118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/pivotal-tracker-api/service.rb', line 118

def iterations(opts={})
  # opts:
  #  :project_id - REQUIRED - A valid pivotal project ID
  #  :fields - OPTIONAL - specific fields to ask pivotal to return for each iteration
  #  :parameters - OPTIONAL - See list of parameters here https://www.pivotaltracker.com/help/api/rest/v5#Iterations
  #
  #  Default Parameters: {scope: 'current', limit: 1, offset: 0}
  
  raise ArgumentError.new("missing required key/value :project_id") unless opts[:project_id]
  
  project_id = opts[:project_id]
  opts[:parameters] = {} unless opts[:parameters]
  opts[:parameters][:scope] = 'current' unless opts[:parameters][:scope]
  opts[:parameters][:limit] = 1 unless opts[:parameters][:limit]
  opts[:parameters][:offset] = 0 unless opts[:parameters][:offset]
  opts[:parameters][:fields] = opts[:fields] if opts[:fields] && opts[:parameters][:fields].nil?
    
  api_url = "/projects/#{project_id}/iterations"
  api_url.append_pivotal_params(opts[:parameters])
  
  puts "\n****** URL: #{api_url}\n\n"

  response = PivotalAPI::Client.get_with_caching(api_url)
  json_iterations = JSON.parse(response, {:symbolize_names => true})
  PivotalAPI::Iterations.from_json(json_iterations)
end

.me(username, password) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'lib/pivotal-tracker-api/service.rb', line 12

def me(username, password)
  PivotalAPI::Client.username = username
  PivotalAPI::Client.password = password
  response = PivotalAPI::Client.ssl_get("/me")
  json_me = JSON.parse(response, {:symbolize_names => true})
  me = PivotalAPI::Me.from_json(json_me)
  PivotalAPI::Client.token = me.api_token
  me
end

.project(opts = {}) ⇒ Object

Raises:

  • (ArgumentError)


95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/pivotal-tracker-api/service.rb', line 95

def project(opts={})
  # opts:
  #  :project_id - REQUIRED - A valid pivotal project ID
  #  :fields - OPTIONAL - specific fields to ask pivotal to return for the project
  
  raise ArgumentError.new("missing required key/value :project_id") unless opts[:project_id]
  
  project_id = opts[:project_id]
  opts[:parameters] = {} unless opts[:parameters]
  opts[:parameters][:fields] = opts[:fields] if opts[:fields] && opts[:parameters][:fields].nil?

  return @project if !@project.nil? && @project.id == project_id.to_i

  api_url = "/projects/#{project_id}"
  api_url.append_pivotal_params(opts[:parameters])
  
  puts "\n****** URL: #{api_url}\n\n"
  
  response = PivotalAPI::Client.get(api_url)
  json_project = JSON.parse(response, {:symbolize_names => true})
  @project = PivotalAPI::Project.from_json(json_project)
end

.projects(opts = {}) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/pivotal-tracker-api/service.rb', line 78

def projects(opts={})
  # opts:
  #  :fields - OPTIONAL - specific fields to ask pivotal to return for each project
  
  opts[:parameters] = {} unless opts[:parameters]
  opts[:parameters][:fields] = opts[:fields] if opts[:fields] && opts[:parameters][:fields].nil?

  api_url = '/projects'
  api_url.append_pivotal_params(opts[:parameters])
  
  puts "\n****** URL: #{api_url}\n\n"
  
  response = PivotalAPI::Client.get(api_url)
  json_projects = JSON.parse(response, {:symbolize_names => true})
  PivotalAPI::Projects.from_json(json_projects)
end

.set_token(token) ⇒ Object



8
9
10
# File 'lib/pivotal-tracker-api/service.rb', line 8

def set_token(token)
  PivotalAPI::Client.token = token
end

.stories(opts = {}) ⇒ Object

Raises:

  • (ArgumentError)


145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/pivotal-tracker-api/service.rb', line 145

def stories(opts={})
  # opts:
  #  :project_id - REQUIRED - A valid pivotal project ID
  #  :fields - OPTIONAL - specific fields to ask pivotal to return for each story
  #  :parameters - OPTIONAL - See list of parameters here https://www.pivotaltracker.com/help/api/rest/v5#projects_project_id_stories_get
  
  raise ArgumentError.new("missing required key/value :project_id") unless opts[:project_id]
  
  project_id = opts[:project_id]
  opts[:parameters] = {} unless opts[:parameters]
  opts[:parameters][:limit] = 20 unless opts[:parameters][:limit]
  opts[:parameters][:offset] = 0 unless opts[:parameters][:offset]
  opts[:parameters][:fields] = opts[:fields] if opts[:fields] && opts[:parameters][:fields].nil?
  
  api_url = "/projects/#{project_id}/stories"
  api_url.append_pivotal_params(opts[:parameters])
  
  puts "\n****** URL: #{api_url}\n\n"
  
  response = PivotalAPI::Client.get(api_url)
  json_story = JSON.parse(response, {:symbolize_names => true})
  PivotalAPI::Stories.from_json(json_story)
end

.story(opts = {}) ⇒ Object

Raises:

  • (ArgumentError)


169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/pivotal-tracker-api/service.rb', line 169

def story(opts={})
  # opts:
  #  :project_id - REQUIRED - A valid pivotal project ID
  #  :story_id - REQUIRED - A valid pivotal story ID
  #  :fields - OPTIONAL - specific fields to ask pivotal to return for each story
  
  raise ArgumentError.new("missing required key/value :project_id") unless opts[:project_id]
  raise ArgumentError.new("missing required key/value :story_id") unless opts[:story_id]
  
  project_id = opts[:project_id]
  story_id = opts[:story_id]
  opts[:parameters] = {} unless opts[:parameters]
  opts[:parameters][:fields] = opts[:fields] if opts[:fields] && opts[:parameters][:fields].nil?
  
  api_url = "/projects/#{project_id}/stories/#{story_id}"
  api_url.append_pivotal_params(opts[:parameters])
  
  puts "\n****** URL: #{api_url}\n\n"
  
  response = PivotalAPI::Client.get(api_url)
  json_story = JSON.parse(response, {:symbolize_names => true})
  PivotalAPI::Story.from_json(json_story)
end

.update_story(story_id, project_id, updates = {}) ⇒ Object

Raises:

  • (ArgumentError)


193
194
195
196
197
198
199
# File 'lib/pivotal-tracker-api/service.rb', line 193

def update_story(story_id, project_id, updates={})
  raise ArgumentError.new("missing required parameter project_id") unless project_id
  raise ArgumentError.new("missing required parameter sotry_id") unless story_id
  
  api_url = "/projects/#{project_id}/stories/#{story_id}"
  PivotalAPI::Client.put(api_url, updates)
end