pivotal-tracker-api 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem](https://img.shields.io/gem/v/pivotal-tracker-api.svg?maxAge=2592000)]() [![Gem](https://img.shields.io/gem/dtv/pivotal-tracker-api.svg?maxAge=2592000)]()
|
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
|