pivotal-tracker-api 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +73 -35
- data/VERSION +1 -1
- data/lib/pivotal-tracker-api/story.rb +34 -10
- data/pivotal-tracker-api.gemspec +3 -3
- data/test/test_service.rb +4 -1
- data/test/test_story.rb +7 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b104677712cae09b437565df220315ae88480d0
|
4
|
+
data.tar.gz: 92f8ff95cc3783d225490b0b53a0a42bcb6420f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e0fd85f353763e431780593df56b051e5c021b59474f45aedb0fbfc7c3babb2245efff89501fbbfc395d997798807a5456aca5aaf12d1220c9d04185fe97fe2
|
7
|
+
data.tar.gz: 602e9a5acacb5429c59adf434d050266ff3428027dedb8b1a0c2be8e45ff718e318ab8a4ed9493fc3fadd5612cfae38b97d382301ed6fc462ee2520a9515ecf1
|
data/README.md
CHANGED
@@ -3,62 +3,100 @@ pivotal-tracker-api
|
|
3
3
|
|
4
4
|
A Pivotal Tracker API gem that can be used to interface with the Pivotal Tracker API v5.
|
5
5
|
|
6
|
+
[]() []()
|
7
|
+
|
6
8
|
### Basic Example
|
7
9
|
|
8
10
|
```ruby
|
9
|
-
# Use your personal
|
10
|
-
|
11
|
-
# This will set the @token in the Client class. Class caching must be enabled for the token to persist.
|
12
|
-
# config.cache_classes = true
|
13
|
-
PivotalAPI::Service.set_token(your_token_here)
|
14
|
-
end
|
11
|
+
# Use your personal pivotal token
|
12
|
+
PivotalAPI::Service.set_token A_PIVOTAL_TOKEN
|
15
13
|
```
|
16
14
|
|
17
15
|
```ruby
|
18
16
|
# Authenticate a user using email / pass
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
17
|
+
@me = PivotalAPI::Me.retrieve('USERNAME', 'PASSWORD')
|
18
|
+
# Note: PivotalAPI::Me.retrieve will automatically set the api token so there is no need to use PivotalAPI::Service.set_token if you use PivotalAPI::Me.retrieve to login
|
19
|
+
```
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
# If you login using PivotalAPI::Me.retrieve, you can simply ask your Me object for your projects.
|
23
|
+
@projects = @me.projects
|
24
|
+
|
25
|
+
# If you set your personal pivotal token manually using PivotalAPI::Service.set_token, you can get your projects using the following.
|
26
|
+
@projects = PivotalAPI::Projects.retrieve()
|
27
|
+
```
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
# To get a specific project, use the following.
|
31
|
+
@project = PivotalAPI::Project.retrieve(PROJECT_ID)
|
32
|
+
```
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
# Get a project's stories, this will return an array of PivotalAPI::Story instance's
|
36
|
+
@stories = @project.stories
|
37
|
+
```
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
# Get a specific story for a project, this will return a PivotalAPI::Story instance
|
41
|
+
@story = @project.story(STORY_ID)
|
42
|
+
```
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
# Get a story's comments, this will return an array of PivotalAPI::Comment instance's
|
46
|
+
@comments = @story.comments
|
47
|
+
```
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
# Get a story's owners, this will return an array of PivotalAPI::Person instance's
|
51
|
+
@owners = @story.owners
|
52
|
+
```
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
# Get a story's followers, this will return an array of PivotalAPI::Person instance's
|
56
|
+
@followers = @story.followers
|
57
|
+
```
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
# Get a story's tasks, this will return an array of PivotalAPI::Task instance's
|
61
|
+
@tasks = @story.tasks
|
62
|
+
```
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
# Get a story's transitions, this will return an array of PivotalAPI::StoryTransition instance's
|
66
|
+
@transitions = @story.transitions
|
67
|
+
```
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
# Get a story's cycle time details, this will return ana array of PivotalAPI::CycleTimeDetails instance's
|
71
|
+
@cycle_time_details = @story.cycle_time_details
|
72
|
+
```
|
73
|
+
|
74
|
+
```ruby
|
75
|
+
# Get a project's activity, this will return an array of PivotalAPI::Activity instance's
|
76
|
+
@stories = @project.activity
|
27
77
|
```
|
28
78
|
|
29
79
|
```ruby
|
30
|
-
# Get
|
31
|
-
|
32
|
-
@projects = PivotalAPI::Service.all_projects(PivotalAPI::Project.fields)
|
33
|
-
end
|
80
|
+
# Get a project's iterations, this will return an array of PivotalAPI::Iteration instance's
|
81
|
+
@iterations = @project.iterations
|
34
82
|
```
|
35
83
|
|
36
84
|
```ruby
|
37
|
-
# Get
|
38
|
-
|
39
|
-
@project = PivotalAPI::Service.one_project(params[:project_id], PivotalAPI::Project.fields)
|
40
|
-
end
|
85
|
+
# Get a project's current iteration
|
86
|
+
@iteration = @project.current_iteration
|
41
87
|
```
|
42
88
|
|
43
89
|
```ruby
|
44
|
-
# Get a
|
45
|
-
|
46
|
-
project_label = params[:project_label]
|
47
|
-
@project_label = CGI.escape(project_label) if project_label
|
48
|
-
@stories = PivotalAPI::Service.all_stories(@project_label, @project, PivotalAPI::Story.fields) if @project_label
|
49
|
-
end
|
90
|
+
# Get a project's next iteration
|
91
|
+
@iteration = @project.next_iteration
|
50
92
|
```
|
51
93
|
|
52
94
|
```ruby
|
53
|
-
# Get
|
54
|
-
|
55
|
-
@project_id = params[:project_id]
|
56
|
-
@iteration = PivotalAPI::Service.iterations(@project_id, 'current')
|
57
|
-
@stories = @iteration.stories
|
58
|
-
end
|
95
|
+
# Get a project's previous iteration
|
96
|
+
@iteration = @project.previous_iteration
|
59
97
|
```
|
60
98
|
|
61
|
-
For additional infomation on how to interface with this gem and use it to communicate with the Pivotal Tracker API v5 see the [PivotalAPI::Service](https://github.com/atljeremy/pivotal-tracker-api/blob/master/lib/pivotal-tracker-api/
|
99
|
+
For additional infomation on how to interface with this gem and use it to communicate with the Pivotal Tracker API v5 see the [PivotalAPI::Service](https://github.com/atljeremy/pivotal-tracker-api/blob/master/lib/pivotal-tracker-api/service.rb) class and the [Service Tests](https://github.com/atljeremy/pivotal-tracker-api/blob/master/test/test_service.rb).
|
62
100
|
|
63
101
|
### Contributing to pivotal-tracker-api
|
64
102
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.1
|
@@ -106,22 +106,46 @@ module PivotalAPI
|
|
106
106
|
def hours
|
107
107
|
return 0 if transitions.nil?
|
108
108
|
duration_hrs = 0
|
109
|
-
|
110
|
-
transitions.each do |transition|
|
109
|
+
prev_transition = nil
|
110
|
+
transitions.reverse.each do |transition|
|
111
111
|
case transition.state
|
112
112
|
when 'started'
|
113
|
-
|
113
|
+
prev_transition = transition
|
114
114
|
when 'finished'
|
115
|
-
|
115
|
+
if prev_transition
|
116
|
+
start_time = Time.parse(prev_transition.occurred_at.to_s)
|
117
|
+
end_time = Time.parse(transition.occurred_at.to_s)
|
118
|
+
puts "finished: start_time: #{start_time} - end_time: #{end_time}"
|
119
|
+
duration_hrs += hours_between(start_time, end_time)
|
120
|
+
end
|
121
|
+
prev_transition = transition
|
122
|
+
when 'delivered'
|
123
|
+
if prev_transition
|
124
|
+
start_time = Time.parse(prev_transition.occurred_at.to_s)
|
125
|
+
end_time = Time.parse(transition.occurred_at.to_s)
|
126
|
+
puts "delivered: start_time: #{start_time} - end_time: #{end_time}"
|
127
|
+
duration_hrs += hours_between(start_time, end_time)
|
128
|
+
end
|
129
|
+
prev_transition = transition
|
130
|
+
when 'rejected'
|
131
|
+
if prev_transition
|
132
|
+
start_time = Time.parse(prev_transition.occurred_at.to_s)
|
133
|
+
end_time = Time.parse(transition.occurred_at.to_s)
|
134
|
+
puts "rejected: start_time: #{start_time} - end_time: #{end_time}"
|
135
|
+
duration_hrs += hours_between(start_time, end_time)
|
136
|
+
end
|
137
|
+
prev_transition = transition
|
138
|
+
when 'accepted'
|
139
|
+
if prev_transition
|
140
|
+
start_time = Time.parse(prev_transition.occurred_at.to_s)
|
141
|
+
end_time = Time.parse(transition.occurred_at.to_s)
|
142
|
+
puts "accepted: start_time: #{start_time} - end_time: #{end_time}"
|
143
|
+
duration_hrs += hours_between(start_time, end_time)
|
144
|
+
end
|
145
|
+
prev_transition = transition
|
116
146
|
end
|
117
147
|
end
|
118
148
|
|
119
|
-
if current_state == 'accepted'
|
120
|
-
duration_hrs += hours_between(started, Time.parse(accepted_at.to_s))
|
121
|
-
elsif current_state != 'accepted' && started
|
122
|
-
duration_hrs += hours_between(started, Time.now)
|
123
|
-
end
|
124
|
-
|
125
149
|
duration_hrs
|
126
150
|
end
|
127
151
|
|
data/pivotal-tracker-api.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: pivotal-tracker-api 1.0.
|
5
|
+
# stub: pivotal-tracker-api 1.0.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "pivotal-tracker-api"
|
9
|
-
s.version = "1.0.
|
9
|
+
s.version = "1.0.1"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["jfox"]
|
14
|
-
s.date = "2016-08-
|
14
|
+
s.date = "2016-08-24"
|
15
15
|
s.description = "A ruby gem to communicate with the Picotal Tracker API v5"
|
16
16
|
s.email = "atljeremy@me.com"
|
17
17
|
s.extra_rdoc_files = [
|
data/test/test_service.rb
CHANGED
@@ -19,7 +19,10 @@ class TestService < Test::Unit::TestCase
|
|
19
19
|
# iteration = project.iterations.first
|
20
20
|
# iteration.stories.each do |story|
|
21
21
|
# puts "------------------"
|
22
|
-
# puts "Story: #{story.name}
|
22
|
+
# puts "Story: #{story.name}\n
|
23
|
+
# status: #{story.current_state}\n
|
24
|
+
# overdue: #{story.overdue?}\n
|
25
|
+
# hours: #{story.hours}"
|
23
26
|
# puts "------------------"
|
24
27
|
# end
|
25
28
|
#
|
data/test/test_story.rb
CHANGED
@@ -136,15 +136,14 @@ class TestActivity < Test::Unit::TestCase
|
|
136
136
|
kind: "label"
|
137
137
|
}],
|
138
138
|
transitions: [{
|
139
|
-
state: "
|
139
|
+
state: "accepted",
|
140
140
|
story_id: 1,
|
141
141
|
project_id: 2,
|
142
142
|
project_version: 3,
|
143
|
-
occurred_at: "2016-08-
|
143
|
+
occurred_at: "2016-08-19T11:04:53-04:00",
|
144
144
|
performed_by_id: 4,
|
145
145
|
kind: "some-kind"
|
146
|
-
},
|
147
|
-
{
|
146
|
+
},{
|
148
147
|
state: "finished",
|
149
148
|
story_id: 1,
|
150
149
|
project_id: 2,
|
@@ -152,13 +151,12 @@ class TestActivity < Test::Unit::TestCase
|
|
152
151
|
occurred_at: "2016-08-19T11:03:53-04:00",
|
153
152
|
performed_by_id: 4,
|
154
153
|
kind: "some-kind"
|
155
|
-
},
|
156
|
-
|
157
|
-
state: "accepted",
|
154
|
+
},{
|
155
|
+
state: "started",
|
158
156
|
story_id: 1,
|
159
157
|
project_id: 2,
|
160
158
|
project_version: 3,
|
161
|
-
occurred_at: "2016-08-
|
159
|
+
occurred_at: "2016-08-17T11:03:53-04:00",
|
162
160
|
performed_by_id: 4,
|
163
161
|
kind: "some-kind"
|
164
162
|
}]
|
@@ -276,7 +274,7 @@ class TestActivity < Test::Unit::TestCase
|
|
276
274
|
end
|
277
275
|
|
278
276
|
should "have valid transitions" do
|
279
|
-
assert_equal("
|
277
|
+
assert_equal("accepted", @story.transitions[0].state)
|
280
278
|
end
|
281
279
|
|
282
280
|
should "have a valid task_ids" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pivotal-tracker-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jfox
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|