westarete-tracker-tools 0.3.0

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.
data/bin/done ADDED
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Summarize accepted stories across all projects for the given iteration.
4
+ #
5
+ # Usage:
6
+ # bundle exec bin/done 0 # current iteration
7
+ # bundle exec bin/done -1 # previous iteration
8
+ # bundle exec bin/done -2 # two iterations ago
9
+ # # etc.
10
+
11
+ require 'rubygems'
12
+ require 'bundler/setup'
13
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
14
+ require 'westarete-tracker-tools'
15
+
16
+ include WestAreteTrackerTools
17
+
18
+ offset = ARGV.any? ? ARGV.shift.to_i : 0
19
+ number_of_problems = 0
20
+ IO.popen('pbcopy', 'w') do |clipboard|
21
+ Project.all.each do |project|
22
+ stories = offset == 0 ? project.current : project.done(offset)
23
+ puts "- #{project.name}"
24
+ stories.each do |story|
25
+ if ! story.valid?
26
+ puts " - Invalid Story"
27
+ puts " story_type: #{story.story_type}"
28
+ puts " name: \"#{story.name}\""
29
+ puts " url: #{story.url}"
30
+ puts " errors:"
31
+ story.errors.full_messages.each do |error|
32
+ puts " - #{error}"
33
+ end
34
+ number_of_problems += 1
35
+ end
36
+ end
37
+ stories.select(&:complete?).each do |story|
38
+ clipboard.puts [
39
+ nil,
40
+ project.name,
41
+ story.story_type,
42
+ story.points,
43
+ story.risk,
44
+ story.name,
45
+ story.price,
46
+ story.url
47
+ ].join("\t")
48
+ end
49
+ end
50
+ end
51
+ puts "\nDone."
52
+ puts "The completed stories have been copied to your clipboard and are ready to be pasted into a spreadsheet."
53
+ exit number_of_problems
data/bin/finished ADDED
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Find and report on any stories that are close to being accepted.
4
+
5
+ require 'rubygems'
6
+ require 'bundler/setup'
7
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
+ require 'westarete-tracker-tools'
9
+
10
+ include WestAreteTrackerTools
11
+
12
+ Project.all.each do |project|
13
+ puts "- #{project.name}"
14
+ project.current.each do |story|
15
+ if story.finished?
16
+ puts " - #{story.name}"
17
+ puts " url: #{story.url}"
18
+ puts " state: #{story.current_state}"
19
+ puts " type: #{story.story_type}"
20
+ puts " points: #{story.points}"
21
+ puts " risk: #{story.risk}"
22
+ puts " price: $#{story.price}"
23
+ end
24
+ end
25
+ end
data/bin/validate ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Validate all stories in the backlog. Report on any that have errors.
4
+
5
+ require 'rubygems'
6
+ require 'bundler/setup'
7
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
8
+ require 'westarete-tracker-tools'
9
+
10
+ include WestAreteTrackerTools
11
+
12
+ number_of_problems = 0
13
+ Project.all.each do |project|
14
+ puts "- #{project.name}"
15
+ project.backlog.each do |story|
16
+ if ! story.valid?
17
+ puts " - Invalid Story"
18
+ puts " story_type: #{story.story_type}"
19
+ puts " name: \"#{story.name}\""
20
+ puts " url: #{story.url}"
21
+ puts " errors:"
22
+ story.errors.full_messages.each do |error|
23
+ puts " - #{error}"
24
+ end
25
+ number_of_problems += 1
26
+ end
27
+ end
28
+ end
29
+ exit number_of_problems
data/ci ADDED
@@ -0,0 +1,21 @@
1
+ #!/bin/bash
2
+ # Continuous Integration build script.
3
+
4
+ echo '========== Set Up RVM ==============================================='
5
+ export PATH=$PATH:~/.rvm/bin
6
+ source ~/.rvm/scripts/rvm
7
+ set -e # Exit on any error
8
+ cd . # Kick off the rvmrc
9
+ set -x # Echo each command
10
+
11
+ echo '========== Verify Environment ======================================='
12
+ ruby -v
13
+ gem env gemdir
14
+ env | sort
15
+
16
+ echo '========== Install Gems ============================================='
17
+ bundle --no-color install
18
+
19
+ echo '========== Run Specs ================================================'
20
+ # Set rspec output options
21
+ rake ci:setup:rspec spec SPEC_OPTS="--format documentation --no-color"
@@ -0,0 +1,6 @@
1
+ require 'pivotal_tracker'
2
+
3
+ PivotalTracker::Client.token = File.read(File.join(ENV['HOME'], '.pivotal_tracker_api_token')).chomp
4
+
5
+ require 'westarete-tracker-tools/story'
6
+ require 'westarete-tracker-tools/project'
@@ -0,0 +1,69 @@
1
+ module WestAreteTrackerTools
2
+ # Represents a project in Tracker.
3
+ class Project
4
+
5
+ # Return all active projects
6
+ def self.all
7
+ PivotalTracker::Project.all.map { |p| new p }
8
+ end
9
+
10
+ # Find a project by its exact name.
11
+ def self.find_by_name(project_name)
12
+ all.detect { |project| project.name == project_name }
13
+ end
14
+
15
+ # Create a new Project object, given its PivotalTracker::Project object.
16
+ def initialize(tracker_project)
17
+ @tracker_project = tracker_project
18
+ end
19
+
20
+ # Return all of the stories in the current and future iterations.
21
+ def backlog
22
+ tracker_stories = @tracker_project.iteration(:current).stories
23
+ tracker_stories += @tracker_project.iteration(:backlog).collect(&:stories).flatten
24
+ tracker_stories.map { |tracker_story| Story.new(tracker_story) }
25
+ end
26
+
27
+ # Return all of the stories in the current iteration.
28
+ def current
29
+ tracker_stories = @tracker_project.iteration(:current).stories
30
+ tracker_stories.map { |tracker_story| Story.new(tracker_story) }
31
+ end
32
+
33
+ # Return all of the stories that have been completed in any iteration. You
34
+ # can optionally specify an offset of zero or less to limit the results to
35
+ # a particular iteration, where zero is the current iteration, -1 is the
36
+ # prior iteration, -2 is two iteratons ago, etc.
37
+ def done(offset=nil)
38
+ if offset.nil?
39
+ tracker_stories = @tracker_project.iteration(:done).collect(&:stories).flatten
40
+ tracker_stories += @tracker_project.iteration(:current).stories
41
+ elsif offset < 0
42
+ iterations = PivotalTracker::Iteration.done(@tracker_project, :offset => offset.to_s)
43
+ tracker_stories = iterations.any? ? iterations.first.stories : []
44
+ elsif offset == 0
45
+ tracker_stories = @tracker_project.iteration(:current).stories
46
+ else
47
+ raise ArgumentError, 'offset should be an integer less than or equal to zero'
48
+ end
49
+ tracker_stories.map! { |tracker_story| Story.new(tracker_story) }
50
+ tracker_stories.select(&:complete?)
51
+ end
52
+
53
+ # Return the name of this project.
54
+ def name
55
+ @tracker_project.name
56
+ end
57
+
58
+ # The id in tracker for this project.
59
+ def tracker_id
60
+ @tracker_project.id
61
+ end
62
+
63
+ # Return the web URL for viewing this project.
64
+ def url
65
+ "http://www.pivotaltracker.com/projects/#{tracker_id}"
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,137 @@
1
+ require 'active_model'
2
+
3
+ module WestAreteTrackerTools
4
+ # Represents a story in tracker.
5
+ class Story
6
+ include ActiveModel::Validations
7
+
8
+ validates_presence_of :risk, :if => Proc.new { |story| story.feature? }
9
+ validates_presence_of :price, :if => Proc.new { |story| story.feature? }
10
+ validates_presence_of :points, :if => Proc.new { |story| story.feature? }
11
+ validates_presence_of :description, :if => Proc.new { |story| story.feature? }
12
+ validates_length_of :description, :minimum => 70, :if => Proc.new { |story| story.feature? }
13
+
14
+ attr_reader :tracker_story
15
+
16
+ RISK_REGEXP = /(\s*\[\s*(G|PG|PG\-?13|R|X)\s*\]\s*)/i
17
+
18
+ def initialize(tracker_story)
19
+ @tracker_story = tracker_story
20
+ end
21
+
22
+ # When was this story accepted?
23
+ def accepted_at
24
+ @tracker_story.accepted_at
25
+ end
26
+
27
+ # Is this story a bug?
28
+ def bug?
29
+ story_type == 'bug'
30
+ end
31
+
32
+ # Is this story a chore?
33
+ def chore?
34
+ story_type == 'chore'
35
+ end
36
+
37
+ # Return all notes in chronological order.
38
+ def comments
39
+ @comments ||= @tracker_story.notes.all.sort_by(&:noted_at)
40
+ end
41
+
42
+ # Is this story complete?
43
+ def complete?
44
+ ! incomplete?
45
+ end
46
+
47
+ # Return a string that describes the story's current state.
48
+ def current_state
49
+ @tracker_story.current_state
50
+ end
51
+
52
+ # Return the description for this story.
53
+ def description
54
+ @tracker_story.description
55
+ end
56
+
57
+ # Is this story a feature?
58
+ def feature?
59
+ story_type == 'feature'
60
+ end
61
+
62
+ # Is this story in a state of being finished, delivered, or rejected?
63
+ def finished?
64
+ %w(finished delivered rejected).include?(current_state)
65
+ end
66
+
67
+ # Is this story incomplete?
68
+ def incomplete?
69
+ accepted_at.nil?
70
+ end
71
+
72
+ # Return the name of this story.
73
+ def name
74
+ @tracker_story.name.gsub(RISK_REGEXP, '')
75
+ end
76
+
77
+ # Return the full name of the story's owner.
78
+ def owner
79
+ @tracker_story.owned_by
80
+ end
81
+
82
+ # Return the point estimate for this story.
83
+ def points
84
+ points = @tracker_story.estimate
85
+ points = nil if points && points < 0
86
+ points
87
+ end
88
+
89
+ # Determined by the most recent comment by Scott that mentions cost or price and a dollar amount.
90
+ def price
91
+ amount = nil
92
+ comments.reverse.each do |comment|
93
+ if comment.author == 'Scott Woods' && comment.text =~ /(cost|price)[^\w].*\$([\d,]+)/i
94
+ amount = $2.gsub(/,/, '').to_i
95
+ break
96
+ end
97
+ end
98
+ amount
99
+ end
100
+
101
+ # Is this story a release?
102
+ def release?
103
+ story_type == 'release'
104
+ end
105
+
106
+ # Return the Requester object for
107
+ def requester
108
+ @tracker_story.requested_by
109
+ end
110
+
111
+ # Return the risk rating for this story. It's extracted from square braces
112
+ # at the beginning of the story name.
113
+ def risk
114
+ if @tracker_story.name =~ RISK_REGEXP
115
+ $2.upcase
116
+ else
117
+ nil
118
+ end
119
+ end
120
+
121
+ # Return the type (of type string) for this story.
122
+ def story_type
123
+ @tracker_story.story_type
124
+ end
125
+
126
+ # The id in tracker for this story.
127
+ def tracker_id
128
+ @tracker_story.id
129
+ end
130
+
131
+ # Return the web URL for viewing this story.
132
+ def url
133
+ @tracker_story.url
134
+ end
135
+
136
+ end
137
+ end
@@ -0,0 +1,525 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://www.pivotaltracker.com:80/services/v3/projects
6
+ body:
7
+ headers:
8
+ accept:
9
+ - "*/*; q=0.5, application/xml"
10
+ content-type:
11
+ - application/xml
12
+ accept-encoding:
13
+ - gzip, deflate
14
+ x-trackertoken:
15
+ - secret
16
+ response: !ruby/struct:VCR::Response
17
+ status: !ruby/struct:VCR::ResponseStatus
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ etag:
22
+ - "\"b2f61385c09143742bf6cfe856a64bb6\""
23
+ x-powered-by:
24
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.0
25
+ content-type:
26
+ - application/xml; charset=utf-8
27
+ server:
28
+ - nginx/0.8.53 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
29
+ x-runtime:
30
+ - "1387"
31
+ content-encoding:
32
+ - gzip
33
+ cache-control:
34
+ - private, max-age=0, must-revalidate
35
+ status:
36
+ - "200"
37
+ transfer-encoding:
38
+ - chunked
39
+ body: !binary |
40
+ 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
110
+ dQW8B2d31AUPwrv/A8mlqvQLnQAA
111
+
112
+ http_version: "1.1"
113
+ - !ruby/struct:VCR::HTTPInteraction
114
+ request: !ruby/struct:VCR::Request
115
+ method: :get
116
+ uri: http://www.pivotaltracker.com:80/services/v3/projects
117
+ body:
118
+ headers:
119
+ accept:
120
+ - "*/*; q=0.5, application/xml"
121
+ content-type:
122
+ - application/xml
123
+ accept-encoding:
124
+ - gzip, deflate
125
+ x-trackertoken:
126
+ - secret
127
+ response: !ruby/struct:VCR::Response
128
+ status: !ruby/struct:VCR::ResponseStatus
129
+ code: 200
130
+ message: OK
131
+ headers:
132
+ etag:
133
+ - "\"b2f61385c09143742bf6cfe856a64bb6\""
134
+ x-powered-by:
135
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.0
136
+ content-type:
137
+ - application/xml; charset=utf-8
138
+ server:
139
+ - nginx/0.8.53 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
140
+ x-runtime:
141
+ - "1042"
142
+ content-encoding:
143
+ - gzip
144
+ cache-control:
145
+ - private, max-age=0, must-revalidate
146
+ status:
147
+ - "200"
148
+ transfer-encoding:
149
+ - chunked
150
+ body: !binary |
151
+ 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
221
+ dQW8B2d31AUPwrv/A8mlqvQLnQAA
222
+
223
+ http_version: "1.1"
224
+ - !ruby/struct:VCR::HTTPInteraction
225
+ request: !ruby/struct:VCR::Request
226
+ method: :get
227
+ uri: http://www.pivotaltracker.com:80/services/v3/projects/213679/iterations/current
228
+ body:
229
+ headers:
230
+ accept:
231
+ - "*/*; q=0.5, application/xml"
232
+ content-type:
233
+ - application/xml
234
+ x-trackertoken:
235
+ - secret
236
+ accept-encoding:
237
+ - gzip, deflate
238
+ response: !ruby/struct:VCR::Response
239
+ status: !ruby/struct:VCR::ResponseStatus
240
+ code: 200
241
+ message: OK
242
+ headers:
243
+ x-powered-by:
244
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.0
245
+ content-type:
246
+ - application/xml
247
+ content-transfer-encoding:
248
+ - binary
249
+ x-runtime:
250
+ - "86"
251
+ server:
252
+ - nginx/0.8.53 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
253
+ content-disposition:
254
+ - attachment; filename="response_1295813890_8ce6b367fd5e1b6004291f1a573d70da.xml"
255
+ content-encoding:
256
+ - gzip
257
+ status:
258
+ - "200"
259
+ cache-control:
260
+ - private
261
+ transfer-encoding:
262
+ - chunked
263
+ body: !binary |
264
+ H4sIAAAAAAAAA81Y3W+bMBB/719hoT2uMTaQD0Sp9q29TNXaaQ9TFblwbbwl
265
+ OLNN0/z3M4YE0pYGbVmExIt9vzvfne/ns4nOHxZzdA9ScZGdOWTgOgiyRKQ8
266
+ uztzvl19PB075/FJxDVIpg1GIb1ewpnDpGRrJz5BqJYVo2KcVhieabgD6cR+
267
+ hHlaSbN8cQPyGUQpqFBKM6krUMo0aL4AJ6YuIdglmIyQ64b2Qx8uryJs4ZXq
268
+ Lc+4mrXqUv+Rbonfriskh6dB2sCUFnJdAlsCnbijieeO6nAtbinFT0j09Gli
269
+ KPGGo0mEa0TDvF1uWqQ7vgWmcwlFoNs5m2xrP5fzeKb1MsR4tVoNlvxeaDbX
270
+ kiW/QA4SsSjVsJqJFd66WGjVNkCZFJtEP94YEuGNqIFOcikh01OTdw0xSxJY
271
+ akgjvDtfW09BJZIviwKK3yjEMsQSE8nrk89oxTKz0QKlAimxAD0zlWfmMyRk
272
+ WtSJMNAZh3uwYnSTK56BUuhOsPkgwk3L9XoZW0D84+LTNfoCq/namCg9RNtE
273
+ WkStIOF3buKEdHqzji8ToTX6LkSqIrwjqRXEKnsGvJ2tgYk0e2egrL2cqYeI
274
+ GwZuSPyynGudhov5siDCXkNBSGjoj0pDtU7D0CYZ+1yiTYY1lBqmMqFbyGIL
275
+ sxDXaDv1lAO+H5BxEOxyxmI1POj4nVAacYVeEdeNsJ3aJteiWK5nQu5uWjW3
276
+ Cyy82Zs+uw80KNO30WiuGOHdqMqx2kAqim6HXc6MMZ14hmebI9JG1bMzo3Lx
277
+ cGeGhOJI7Hpm7Of518pefxluiBmEdHgQhgeh773A8APR0iNjr42WbyFhuQJz
278
+ Av93StrEeeOjUtK0cdr/Nl642I2StEMbT2HOzU2wKyeP18dNG3+/8a2//Dad
279
+ wwv96kL6zx08OAK/yXjUyu8LyROo+u4ROF4mr7q1HK/t+v1vu4WLh+N4+djp
280
+ SvEX2+5H+86CtL+MNI1jGLqHuVMPja22jvs3d74RpaTvDaZ0sVvxmYNk7zvR
281
+ vtIPUnvmaXdKvGt0WVrsaQlSRM2bzgsDepBLnxe6pFMJlvVofmMUrxBzgdv8
282
+ uzH/ceqBEf4BtIF8tv0RAAA=
283
+
284
+ http_version: "1.1"
285
+ - !ruby/struct:VCR::HTTPInteraction
286
+ request: !ruby/struct:VCR::Request
287
+ method: :get
288
+ uri: http://www.pivotaltracker.com:80/services/v3/projects/213679/iterations/backlog
289
+ body:
290
+ headers:
291
+ accept:
292
+ - "*/*; q=0.5, application/xml"
293
+ content-type:
294
+ - application/xml
295
+ x-trackertoken:
296
+ - secret
297
+ accept-encoding:
298
+ - gzip, deflate
299
+ response: !ruby/struct:VCR::Response
300
+ status: !ruby/struct:VCR::ResponseStatus
301
+ code: 200
302
+ message: OK
303
+ headers:
304
+ x-powered-by:
305
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.0
306
+ content-type:
307
+ - application/xml
308
+ content-transfer-encoding:
309
+ - binary
310
+ x-runtime:
311
+ - "442"
312
+ server:
313
+ - nginx/0.8.53 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
314
+ content-disposition:
315
+ - attachment; filename="response_1295813891_2aa5f8d8c64cde77e9defa06e156518d.xml"
316
+ content-encoding:
317
+ - gzip
318
+ status:
319
+ - "200"
320
+ cache-control:
321
+ - private
322
+ transfer-encoding:
323
+ - chunked
324
+ body: !binary |
325
+ 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
357
+
358
+ http_version: "1.1"
359
+ - !ruby/struct:VCR::HTTPInteraction
360
+ request: !ruby/struct:VCR::Request
361
+ method: :get
362
+ uri: http://www.pivotaltracker.com:80/services/v3/projects/213679/iterations/done
363
+ body:
364
+ headers:
365
+ accept:
366
+ - "*/*; q=0.5, application/xml"
367
+ content-type:
368
+ - application/xml
369
+ accept-encoding:
370
+ - gzip, deflate
371
+ x-trackertoken:
372
+ - secret
373
+ response: !ruby/struct:VCR::Response
374
+ status: !ruby/struct:VCR::ResponseStatus
375
+ code: 200
376
+ message: OK
377
+ headers:
378
+ x-powered-by:
379
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.0
380
+ content-transfer-encoding:
381
+ - binary
382
+ content-type:
383
+ - application/xml
384
+ server:
385
+ - nginx/0.8.53 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
386
+ x-runtime:
387
+ - "56"
388
+ content-encoding:
389
+ - gzip
390
+ content-disposition:
391
+ - attachment; filename="response_1295813892_5e48dd118e553e20303d3ecefcb39fae.xml"
392
+ cache-control:
393
+ - private
394
+ status:
395
+ - "200"
396
+ transfer-encoding:
397
+ - chunked
398
+ body: !binary |
399
+ H4sIAAAAAAAAA81WwW7bMAy99ysEY8ctsuykSQzXRTFsw047tMMGDEWg2myj
400
+ LZE8SW6avx8tObGTZo277lAgF4mPFPlIPic9f1guyD1oI5Q8C9ggDAjIXBVC
401
+ 3p0FX68+vpsE59lJKixobhFjiF2XcBZwrfk6yE4IaW31qT4XDUZIC3egg4yl
402
+ VBSNVVbLG9AHEN7QoIzl2jaggluwYglBFoUspCyi0ZiEYeJ+5MPlVUodvHG9
403
+ FVKY+SFfRkP8xXu+Hr99V2kBj4vEsvARZ3M10y0hPSmIjlKAiH4UHC7jGRSw
404
+ 8N8owLprDtaeq7/0ehqOpzEbteU6XKnVT8jt7PFsRCw+HU9T2iI64d1zs3ri
405
+ slvgttLg29DcuXlz8Su9yObWlgmlq9VqUIp7ZfnCap7/Aj3I1dJ1b03NXK3o
406
+ NsXaq40BBqcMZ21/NrExG1MHnVdag7Qz5N1CxvMcSgtFSnfv2+gFmFyLst6h
407
+ 7MIQLgnPMaW3J5/JikucdUUKRYxagp3j8uG9JEoX9aoohM4F3IMzk5vKCAnG
408
+ kDvFF4OUdiO370m+hOzHp2vyZVGgv0+PbFl05hat4XeFRUIxu1lnl7mylnxT
409
+ qjAp3bG0DmolD4C3ty0w19g4hPKD6+xmOYoJC5MRS1izzq1PJ8WqrIXgaKBR
410
+ woZJfOp1ofXpBNqQ8VRKqBIs6ipMx6kTSip7UCyaqazNLdoN6uMFGA5HbDLC
411
+ DdhIpHdGrIUHm71XxhJhyJtoGGKz3d2WXReSV3au9G7XmrtdYJ3OUf58Iyae
412
+ v41H90WUqZ2y/NnJokvHb5o/vlA046OiiYhniCbbF77niOb+N6fnd6OvaEYR
413
+ 63wmHZOvTTR9iv1EE2v5z6L5tNB9vyYXr1vkIhKFCYuTeOR368Uix9gLRY71
414
+ ELme69z5Q4RK8AcojgE4VgoAAA==
415
+
416
+ http_version: "1.1"
417
+ - !ruby/struct:VCR::HTTPInteraction
418
+ request: !ruby/struct:VCR::Request
419
+ method: :get
420
+ uri: http://www.pivotaltracker.com:80/services/v3/projects/213679/iterations/done?offset=-2
421
+ body:
422
+ headers:
423
+ accept:
424
+ - "*/*; q=0.5, application/xml"
425
+ content-type:
426
+ - application/xml
427
+ x-trackertoken:
428
+ - secret
429
+ accept-encoding:
430
+ - gzip, deflate
431
+ response: !ruby/struct:VCR::Response
432
+ status: !ruby/struct:VCR::ResponseStatus
433
+ code: 200
434
+ message: OK
435
+ headers:
436
+ x-powered-by:
437
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.0
438
+ content-type:
439
+ - application/xml
440
+ content-transfer-encoding:
441
+ - binary
442
+ x-runtime:
443
+ - "54"
444
+ server:
445
+ - nginx/0.8.53 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
446
+ content-disposition:
447
+ - attachment; filename="response_1295813893_017f72dc775e875683cdf1af5082dbf1.xml"
448
+ content-encoding:
449
+ - gzip
450
+ status:
451
+ - "200"
452
+ cache-control:
453
+ - private
454
+ transfer-encoding:
455
+ - chunked
456
+ body: !binary |
457
+ H4sIAAAAAAAAA81U32/aMBB+56+woj1uJE6gQBRSVdM27WkP7bRJU4VMcgVv
458
+ YGf2Bcp/X8cOJLRQqLpJlfxyd9+d7+eXXN4vF2QFSnMpxh7tBh4Bkcmci9nY
459
+ +37z+cPQu0w7CUdQDA1GE9wUMPaYUmzjpR1CGlslVXJeY7hAmIHy0jDxeV5b
460
+ RbmcgjqAcIYapZEprEE5Q0C+BBMnoNQPzItIEMT2kU/XN4lv4bXrHRdcz4/6
461
+ 0uCRr8Pv/pWKw9MibWEapdo44JFCR8FgFNF+U67FFUr+hgwnBxpDo4vBKPEb
462
+ RCu8/W5StTu9A4algqrQnc4228Yv1SKdIxax76/X627BVxLZAhXL/oDqZnLp
463
+ 3Hw9l2t/l2Ll1cQAbVpsGn1gMFtTC52VSoHAiek7QsqyDAqEPPH39U30HHSm
464
+ eFEtUHqlCROEZaaS952vZM2EGbQkuSRaLgHnZvOMXhCp8mpPpIHOOazAmsm0
465
+ 1FyA1mQm2aKb+O3IzX+CLSH99eWWfFvkxt+lR3ZdtOYGreBvaYqEfDLdpNeZ
466
+ RCQ/pMx14u9ZGge5FgfAO20DzJQZnIGy47scRoQGcZ/GtN7lxqeVYllUV3Ay
467
+ UD+mvTi6cEfR+LQCbZvxXErmvGjYPq+WUyuUkHjkUuxWVuYGbVVPD6DX69Nh
468
+ 31zAlh/sRldYhHtMP0qNhGvyLuwFZthWt+uuhbES51LtT63W7QOrdE72zw1i
469
+ 6Pq39Wj/mPj7ZTlZbyH1gTrRCYZNKtFUuKVQK+5JB1sTnSRNg3gBadLHxPcS
470
+ 0hz8X9IMQ0rfOGm6FM8jTVPLPybN54nu5y25etskF5IwiGkUR313W68mOUpf
471
+ SXL0DJI785xbt21u/QHlqa6CUwkAAA==
472
+
473
+ http_version: "1.1"
474
+ - !ruby/struct:VCR::HTTPInteraction
475
+ request: !ruby/struct:VCR::Request
476
+ method: :get
477
+ uri: http://www.pivotaltracker.com:80/services/v3/projects/213679/iterations/done?offset=-1
478
+ body:
479
+ headers:
480
+ accept:
481
+ - "*/*; q=0.5, application/xml"
482
+ content-type:
483
+ - application/xml
484
+ accept-encoding:
485
+ - gzip, deflate
486
+ x-trackertoken:
487
+ - secret
488
+ response: !ruby/struct:VCR::Response
489
+ status: !ruby/struct:VCR::ResponseStatus
490
+ code: 200
491
+ message: OK
492
+ headers:
493
+ x-powered-by:
494
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.0
495
+ content-transfer-encoding:
496
+ - binary
497
+ content-type:
498
+ - application/xml
499
+ server:
500
+ - nginx/0.8.53 + Phusion Passenger 3.0.0 (mod_rails/mod_rack)
501
+ x-runtime:
502
+ - "48"
503
+ content-encoding:
504
+ - gzip
505
+ content-disposition:
506
+ - attachment; filename="response_1295813893_91077580786dc3e613dab44b148836cc.xml"
507
+ cache-control:
508
+ - private
509
+ status:
510
+ - "200"
511
+ transfer-encoding:
512
+ - chunked
513
+ body: !binary |
514
+ H4sIAAAAAAAAA32T227bMAyG7/sUgu8bWfbarIajohfdC7TDBgxDoMpsoy2W
515
+ PIqum7effIjlHlLANxS//xdJU+X1S71nz4DeOLtJxCpNGFjtKmOfNsn3+2/n
516
+ X5NreVYaAlQUGM/o0MAmUYjqkMgzxmKuj/q4mhhjCZ4AE5mX3FRT1rb1A+AH
517
+ xJiYKE8KaYIqRUCmhkRmqRA8FVykLE2L4WO3d/clH/BJ+mis8bvT2vUb7cjP
518
+ 9zo08L7JoTFPDg8jeKLRq3SdZULEdgeuQfcHNG3fDyYT+eX6quSRWNgP1237
519
+ cctHUNQi9I3OZ8OwB/8W93JH1BScd123asyzI7UnVPov4Eq7epRxv3Mdn0vs
520
+ VdEDfBhxGPTbHxN6OaYWtG4RwdI2zJ1AKq2hIahK/vo8ulfgNZqmXyBZ8mUU
521
+ GatqkL9+/mY3kx2bux5SkUT414aioNo+HOSddkTsh3OVL/mrTBS4zn4Az6cR
522
+ 1BgGHVB1eveyjGVpIfIivxh3L2oWJbZNv7WfG+VMXBTiSyHEaBQ1C6PjbD8r
523
+ SQSnbPkcFqKj1bQ6YzgGYc/7MCzr8XGHhx6DkPwPI4EjUx4EAAA=
524
+
525
+ http_version: "1.1"