tracker_api 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +18 -0
  3. data/.travis.yml +12 -0
  4. data/CHANGELOG.md +3 -0
  5. data/Gemfile +7 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +57 -0
  8. data/Rakefile +18 -0
  9. data/lib/tracker_api.rb +39 -0
  10. data/lib/tracker_api/client.rb +71 -0
  11. data/lib/tracker_api/endpoints/epic.rb +20 -0
  12. data/lib/tracker_api/endpoints/epics.rb +22 -0
  13. data/lib/tracker_api/endpoints/iterations.rb +22 -0
  14. data/lib/tracker_api/endpoints/project.rb +21 -0
  15. data/lib/tracker_api/endpoints/projects.rb +22 -0
  16. data/lib/tracker_api/endpoints/stories.rb +22 -0
  17. data/lib/tracker_api/endpoints/story.rb +20 -0
  18. data/lib/tracker_api/error.rb +18 -0
  19. data/lib/tracker_api/logger.rb +31 -0
  20. data/lib/tracker_api/resources/account.rb +18 -0
  21. data/lib/tracker_api/resources/epic.rb +19 -0
  22. data/lib/tracker_api/resources/iteration.rb +23 -0
  23. data/lib/tracker_api/resources/label.rb +14 -0
  24. data/lib/tracker_api/resources/project.rb +85 -0
  25. data/lib/tracker_api/resources/story.rb +33 -0
  26. data/lib/tracker_api/resources/time_zone.rb +13 -0
  27. data/lib/tracker_api/version.rb +3 -0
  28. data/test/client_test.rb +61 -0
  29. data/test/minitest_helper.rb +30 -0
  30. data/test/project_test.rb +81 -0
  31. data/test/vcr/cassettes/get_all_projects.json +1 -0
  32. data/test/vcr/cassettes/get_current_iteration.json +1 -0
  33. data/test/vcr/cassettes/get_done_iterations.json +1 -0
  34. data/test/vcr/cassettes/get_epics.json +1 -0
  35. data/test/vcr/cassettes/get_project.json +1 -0
  36. data/test/vcr/cassettes/get_project_with_epics.json +1 -0
  37. data/test/vcr/cassettes/get_unscheduled_stories.json +1 -0
  38. data/tracker_api.gemspec +36 -0
  39. metadata +273 -0
@@ -0,0 +1,31 @@
1
+ module TrackerApi
2
+ class Logger < Faraday::Response::Middleware
3
+ extend Forwardable
4
+
5
+ def initialize(app, logger = nil)
6
+ super(app)
7
+ @logger = logger || ::Logger.new(STDOUT)
8
+ end
9
+
10
+ def_delegators :@logger, :debug, :info, :warn, :error, :fatal
11
+
12
+ def call(env)
13
+ info("#{env[:method]} => #{env[:url].to_s}")
14
+ debug('request') { dump_headers env[:request_headers] }
15
+ debug('request.body') { env[:body] }
16
+ super
17
+ end
18
+
19
+ def on_complete(env)
20
+ info("#{env[:status]} <= #{env[:url].to_s}")
21
+ debug('response') { dump_headers env[:response_headers] }
22
+ debug('response.body') { env[:body] }
23
+ end
24
+
25
+ private
26
+
27
+ def dump_headers(headers)
28
+ headers.map { |k, v| "#{k}: #{v.inspect}" }.join("\n")
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,18 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class Account
4
+ include Virtus.model
5
+
6
+ attribute :id, Integer
7
+ attribute :created_at, DateTime
8
+ attribute :status, String
9
+ attribute :kind, String
10
+ attribute :name, String
11
+ attribute :updated_at, DateTime
12
+ attribute :url, String
13
+ attribute :plan, String
14
+ attribute :days_left, Integer
15
+ attribute :over_the_limit, Boolean
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class Epic
4
+ include Virtus.model
5
+
6
+ attribute :client
7
+
8
+ attribute :id, Integer
9
+ attribute :created_at, DateTime
10
+ attribute :description, String
11
+ attribute :kind, String
12
+ attribute :label, TrackerApi::Resources::Label
13
+ attribute :name, String
14
+ attribute :project_id, Integer
15
+ attribute :updated_at, DateTime
16
+ attribute :url, String
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class Iteration
4
+ include Virtus.model
5
+
6
+ attribute :client
7
+
8
+ attribute :created_at, DateTime
9
+ attribute :finish, DateTime
10
+ attribute :id, Integer
11
+ attribute :kind, String
12
+ attribute :length, Integer
13
+ attribute :number, Integer
14
+ attribute :planned, Boolean
15
+ attribute :project_id, Integer
16
+ attribute :start, DateTime
17
+ attribute :stories, [TrackerApi::Resources::Story]
18
+ attribute :story_ids, [Integer]
19
+ attribute :team_strength, Float
20
+ attribute :updated_at, DateTime
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class Label
4
+ include Virtus.model
5
+
6
+ attribute :id, Integer
7
+ attribute :created_at, DateTime
8
+ attribute :kind, String
9
+ attribute :name, String
10
+ attribute :project_id, Integer
11
+ attribute :updated_at, DateTime
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,85 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class Project
4
+ include Virtus.model
5
+
6
+ attribute :client
7
+
8
+ attribute :account, TrackerApi::Resources::Account
9
+ attribute :account_id, Integer
10
+ attribute :atom_enabled, Boolean
11
+ attribute :bugs_and_chores_are_estimatable, Boolean
12
+ attribute :created_at, DateTime
13
+ attribute :current_iteration_number, Integer
14
+ attribute :description, String
15
+ attribute :enable_following, Boolean
16
+ attribute :enable_incoming_emails, Boolean
17
+ attribute :enable_planned_mode, Boolean
18
+ attribute :enable_tasks, Boolean
19
+ attribute :epic_ids, Array[Integer]
20
+ attribute :epics, Array[TrackerApi::Resources::Epic]
21
+ attribute :has_google_domain, Boolean
22
+ attribute :id, Integer
23
+ attribute :initial_velocity, Integer
24
+ attribute :iteration_length, Integer
25
+ attribute :kind, String
26
+ attribute :label_ids, Array[Integer]
27
+ attribute :labels, Array[TrackerApi::Resources::Label]
28
+ attribute :name, String
29
+ attribute :number_of_done_iterations_to_show, Integer
30
+ attribute :point_scale, String
31
+ attribute :point_scale_is_custom, Boolean
32
+ attribute :profile_content, String
33
+ attribute :public, Boolean
34
+ attribute :start_date, DateTime
35
+ attribute :start_time, DateTime
36
+ attribute :time_zone, TrackerApi::Resources::TimeZone
37
+ attribute :updated_at, DateTime
38
+ attribute :velocity_averaged_over, Integer
39
+ attribute :version, Integer
40
+ attribute :week_start_day, String
41
+
42
+ # @return [Array[Epic]] epics associated with this project
43
+ def epics(params={})
44
+ raise ArgumentError, 'Expected @epics to be an Array' unless @epics.is_a? Array
45
+ return @epics unless @epics.empty?
46
+
47
+ @epics = Endpoints::Epics.new(client).get(id, params)
48
+ end
49
+
50
+ # @param [Hash] params
51
+ # @option params [String] :scope ('') Restricts the state of iterations to return.
52
+ # If not specified, it defaults to all iterations including done.
53
+ # Valid enumeration values: done, current, backlog, current_backlog.
54
+ # @option params [Integer] :offset The offset of first iteration to return, relative to the
55
+ # set of iterations specified by 'scope', with zero being the first iteration in the scope.
56
+ # @option params [Integer] :limit The number of iterations to return relative to the offset.
57
+ # @return [Array[Iteration]] iterations associated with this project
58
+ def iterations(params = {})
59
+ Endpoints::Iterations.new(client).get(id, params)
60
+ end
61
+
62
+ # @param [Hash] params
63
+ # @option params [String] :with_label A label name which all returned stories must match.
64
+ # @option params [String] :with_state A story's current_state which all returned stories must match.
65
+ # Valid enumeration values: accepted, delivered, finished, started, rejected, unstarted, unscheduled
66
+ # @option params [String] :filter This parameter supplies a search string;
67
+ # only stories that match the search criteria are returned.
68
+ # Cannot be used together with any other parameters except limit and offset.
69
+ # ex) state:started requester:OWK label:"jedi stuff" keyword
70
+ # @option params [Integer] :offset With the first story in your priority list as 0,
71
+ # the index of the first story you want returned.
72
+ # @option params [Integer] :limit The number of stories you want returned.
73
+ # @return [Array[Story]] iterations associated with this project
74
+ def stories(params = {})
75
+ Endpoints::Stories.new(client).get(id, params)
76
+ end
77
+
78
+ # @param [Fixnum] story_id id of story
79
+ # @return [Story]
80
+ def story(story_id)
81
+ Endpoints::Story.new(client).get(id, story_id)
82
+ end
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,33 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class Story
4
+ include Virtus.model
5
+
6
+ attribute :client
7
+
8
+ attribute :accepted_at, DateTime
9
+ attribute :comment_ids, Array[Integer]
10
+ attribute :created_at, DateTime
11
+ attribute :current_state, String # (accepted, delivered, finished, started, rejected, unstarted, unscheduled)
12
+ attribute :deadline, DateTime
13
+ attribute :description, String
14
+ attribute :estimate, Float
15
+ attribute :external_id, String
16
+ attribute :follower_ids, Array[Integer]
17
+ attribute :id, Integer
18
+ attribute :integration_id, Integer
19
+ attribute :kind, String
20
+ attribute :label_ids, Array[Integer]
21
+ attribute :labels, Array[TrackerApi::Resources::Label]
22
+ attribute :name, String
23
+ attribute :owned_by_id, Integer
24
+ attribute :planned_iteration_number, Integer
25
+ attribute :project_id, Integer
26
+ attribute :requested_by_id, Integer
27
+ attribute :story_type, String # (feature, bug, chore, release)
28
+ attribute :task_ids, Array[Integer]
29
+ attribute :updated_at, DateTime
30
+ attribute :url, String
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,13 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class TimeZone
4
+ include Virtus.value_object
5
+
6
+ values do
7
+ attribute :offset, String
8
+ attribute :olson_name, String
9
+ attribute :kind, String
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,3 @@
1
+ module TrackerApi
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,61 @@
1
+ require_relative 'minitest_helper'
2
+
3
+ describe TrackerApi do
4
+ it 'has a version' do
5
+ ::TrackerApi::VERSION.wont_be_nil
6
+ end
7
+ end
8
+
9
+ describe TrackerApi::Client do
10
+ it 'can be configured' do
11
+ client = TrackerApi::Client.new(url: 'http://test.com',
12
+ api_version: '/foo-bar/1',
13
+ token: '12345')
14
+
15
+ client.url.must_equal 'http://test.com'
16
+ client.api_version.must_equal '/foo-bar/1'
17
+ client.token.must_equal '12345'
18
+ end
19
+
20
+ describe '.projects' do
21
+ let(:pt_user) { PT_USER_1 }
22
+ let(:client) { TrackerApi::Client.new token: pt_user[:token] }
23
+
24
+ it 'gets all projects' do
25
+ VCR.use_cassette('get all projects', record: :new_episodes) do
26
+ projects = client.projects(fields: ':default,account,current_velocity,labels(name),epics(:default,label(name))')
27
+
28
+ projects.wont_be_empty
29
+ project = projects.first
30
+ project.must_be_instance_of TrackerApi::Resources::Project
31
+ project.id.must_equal pt_user[:project_id]
32
+
33
+ project.account.must_be_instance_of TrackerApi::Resources::Account
34
+
35
+ project.labels.wont_be_empty
36
+ project.labels.first.must_be_instance_of TrackerApi::Resources::Label
37
+
38
+ project.epics.wont_be_empty
39
+ project.epics.first.must_be_instance_of TrackerApi::Resources::Epic
40
+ end
41
+ end
42
+ end
43
+
44
+ describe '.project' do
45
+ let(:pt_user) { PT_USER_1 }
46
+ let(:client) { TrackerApi::Client.new token: pt_user[:token] }
47
+ let(:project_id) { pt_user[:project_id] }
48
+
49
+ it 'gets a project by id' do
50
+ VCR.use_cassette('get project', record: :new_episodes) do
51
+ project = client.project(project_id)
52
+
53
+ project.must_be_instance_of TrackerApi::Resources::Project
54
+ project.id.must_equal project_id
55
+
56
+ project.account.must_be_nil
57
+ project.account_id.wont_be_nil
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,30 @@
1
+ #Bundler.require(:test)
2
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
+
4
+ require 'coveralls'
5
+ Coveralls.wear!
6
+
7
+ require 'minitest/byebug' if ENV['DEBUG']
8
+ require 'minitest/autorun'
9
+ require 'awesome_print'
10
+ require 'multi_json'
11
+ require 'vcr'
12
+
13
+ require 'tracker_api'
14
+ # require File.expand_path('../../lib/tracker_api', __FILE__)
15
+
16
+ Dir[File.expand_path('../{support,shared}/**/*.rb', __FILE__)].each { |f| require f }
17
+
18
+ VCR.configure do |c|
19
+ c.ignore_localhost = true
20
+ c.cassette_library_dir = File.expand_path('../vcr/cassettes', __FILE__).to_s
21
+ c.default_cassette_options = { serialize_with: :json }
22
+ c.hook_into :faraday
23
+ c.allow_http_connections_when_no_cassette = false
24
+ end
25
+
26
+ # These API Tokens are for a user with just one Public Sample Project
27
+ PT_USER_1 = { project_id: 1027488, token: '0de3ac29f13082f0c16ed76f3f3f6895' } # trackher1 user
28
+ PT_USER_2 = { project_id: 1027492, token: '90a51cef4e7c358b36b4e4cdf0f2dd2a' } # trackher2 user
29
+ PT_USER_3 = { project_id: 1027494, token: 'f8aad6b471d1b1eb303d368ef533f622' } # trackher3 user
30
+ PT_USERS = [PT_USER_1, PT_USER_2, PT_USER_3]
@@ -0,0 +1,81 @@
1
+ require_relative 'minitest_helper'
2
+
3
+ describe TrackerApi::Resources::Project do
4
+ let(:pt_user) { PT_USER_1 }
5
+ let(:client) { TrackerApi::Client.new token: pt_user[:token] }
6
+ let(:project_id) { pt_user[:project_id] }
7
+ let(:project) { VCR.use_cassette('get project') { client.project(project_id) } }
8
+
9
+ describe '.epics' do
10
+ it 'gets all epics for this project' do
11
+ VCR.use_cassette('get epics', record: :new_episodes) do
12
+ epics = project.epics
13
+
14
+ epics.wont_be_empty
15
+ epic = epics.first
16
+ epic.must_be_instance_of TrackerApi::Resources::Epic
17
+ end
18
+ end
19
+
20
+ describe 'with eager loading of epics' do
21
+ let(:project_with_epics) do
22
+ VCR.use_cassette('get project with epics') do
23
+ client.project(project_id, fields: ':default,epics(:default,label(name))')
24
+ end
25
+ end
26
+
27
+ # does not raise VCR::Errors::UnhandledHTTPRequestError
28
+ it 'does not make an extra request' do
29
+ epics = project_with_epics.epics
30
+
31
+ epics.wont_be_empty
32
+ epic = epics.first
33
+ epic.must_be_instance_of TrackerApi::Resources::Epic
34
+ end
35
+ end
36
+ end
37
+
38
+ describe '.iterations' do
39
+ it 'can get only done iterations' do
40
+ VCR.use_cassette('get done iterations', record: :new_episodes) do
41
+ offset = -project.number_of_done_iterations_to_show.to_i
42
+ done_iterations = project.iterations(scope: :done, offset: offset)
43
+
44
+ done_iterations.wont_be_empty
45
+ done_iterations.length.must_be :<, project.number_of_done_iterations_to_show
46
+
47
+ iteration = done_iterations.first
48
+ iteration.must_be_instance_of TrackerApi::Resources::Iteration
49
+ end
50
+ end
51
+
52
+ it 'can get current iteration' do
53
+ VCR.use_cassette('get current iteration', record: :new_episodes) do
54
+ iterations = project.iterations(scope: :current)
55
+
56
+ iterations.wont_be_empty
57
+
58
+ current = iterations.first
59
+ current.must_be_instance_of TrackerApi::Resources::Iteration
60
+ current.stories.wont_be_empty
61
+
62
+ story = current.stories.first
63
+ story.must_be_instance_of TrackerApi::Resources::Story
64
+ end
65
+ end
66
+ end
67
+
68
+ describe '.stories' do
69
+ it 'can get unscheduled stories (icebox)' do
70
+ VCR.use_cassette('get unscheduled stories', record: :new_episodes) do
71
+ stories = project.stories(with_state: :unscheduled)
72
+
73
+ stories.wont_be_empty
74
+
75
+ story = stories.first
76
+ story.must_be_instance_of TrackerApi::Resources::Story
77
+ story.current_state.must_equal 'unscheduled'
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects?fields=%3Adefault%2Caccount%2Ccurrent_velocity%2Clabels%28name%29%2Cepics%28%3Adefault%2Clabel%28name%29%29","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"cache-control":["private, max-age=0, must-revalidate"],"etag":["\"0d122ab3cf93bd85140ffc95b445d705\""],"x-runtime":["120"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"[\n {\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"version\": 1,\n \"current_iteration_number\": 6,\n \"account\": {\n \"days_left\": 39,\n \"id\": 621384,\n \"status\": \"active\",\n \"name\": \"Trackher User1\",\n \"kind\": \"account_summary\"\n },\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"enable_following\": true,\n \"time_zone\": {\n \"offset\": \"-07:00\",\n \"olson_name\": \"America/Los_Angeles\",\n \"kind\": \"time_zone\"\n },\n \"point_scale_is_custom\": false,\n \"account_id\": 621384,\n \"epics\": [\n {\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"label\": {\n \"id\": 7849080,\n \"name\": \"admin\"\n },\n \"description\": \"Get the Admin users working on the site\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"url\": \"http://www.pivotaltracker.com/epic/show/1087314\",\n \"project_id\": 1027488,\n \"id\": 1087314,\n \"name\": \"Admin Users\",\n \"kind\": \"epic\"\n },\n {\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"label\": {\n \"id\": 7849082,\n \"name\": \"shopping\"\n },\n \"description\": \"Allow shoppers to use the site\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"url\": \"http://www.pivotaltracker.com/epic/show/1087316\",\n \"project_id\": 1027488,\n \"id\": 1087316,\n \"name\": \"Shoppers\",\n \"kind\": \"epic\"\n }\n ],\n \"labels\": [\n {\n \"id\": 7849080,\n \"name\": \"admin\"\n },\n {\n \"id\": 7849106,\n \"name\": \"blog\"\n },\n {\n \"id\": 7849086,\n \"name\": \"cart\"\n },\n {\n \"id\": 7849090,\n \"name\": \"checkout\"\n },\n {\n \"id\": 7849078,\n \"name\": \"deployment\"\n },\n {\n \"id\": 7849100,\n \"name\": \"design\"\n },\n {\n \"id\": 7849112,\n \"name\": \"epic\"\n },\n {\n \"id\": 7849104,\n \"name\": \"featured products\"\n },\n {\n \"id\": 7849110,\n \"name\": \"ie6\"\n },\n {\n \"id\": 7849092,\n \"name\": \"needs discussion\"\n },\n {\n \"id\": 7849094,\n \"name\": \"orders\"\n },\n {\n \"id\": 7849108,\n \"name\": \"reporting\"\n },\n {\n \"id\": 7849088,\n \"name\": \"search\"\n },\n {\n \"id\": 7849098,\n \"name\": \"shopper accounts\"\n },\n {\n \"id\": 7849082,\n \"name\": \"shopping\"\n },\n {\n \"id\": 7849096,\n \"name\": \"signup / signin\"\n },\n {\n \"id\": 7849084,\n \"name\": \"usability\"\n },\n {\n \"id\": 7849102,\n \"name\": \"user generated content\"\n }\n ],\n \"atom_enabled\": false,\n \"has_google_domain\": false,\n \"start_time\": \"2014-02-10T08:00:00Z\",\n \"number_of_done_iterations_to_show\": 12,\n \"week_start_day\": \"Monday\",\n \"id\": 1027488,\n \"enable_tasks\": true,\n \"bugs_and_chores_are_estimatable\": false,\n \"point_scale\": \"0,1,2,3\",\n \"current_velocity\": 1,\n \"public\": false,\n \"enable_incoming_emails\": true,\n \"profile_content\": \"This is a demo project, created by Tracker, with example stories for a simple shopping web site.\",\n \"velocity_averaged_over\": 3,\n \"name\": \"My Sample Project\",\n \"iteration_length\": 1,\n \"kind\": \"project\",\n \"initial_velocity\": 10,\n \"enable_planned_mode\": false\n }\n]"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:26 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/iterations?scope=current","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"cache-control":["private, max-age=0, must-revalidate"],"x-tracker-project-version":["1"],"etag":["\"b7929dd9d79159714ee85b3c70fe1d79\""],"x-runtime":["150"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"[\n {\n \"finish\": \"2014-03-24T07:00:00Z\",\n \"kind\": \"iteration\",\n \"stories\": [\n {\n \"name\": \"Shopper should be able to view contents of shopping cart\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"cart\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849086,\n \"project_id\": 1027488\n },\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"project_id\": 1027488\n }\n ],\n \"current_state\": \"delivered\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727998,\n \"project_id\": 1027488,\n \"owner_ids\": [\n\n ],\n \"url\": \"http://www.pivotaltracker.com/story/show/66727998\",\n \"estimate\": 2,\n \"description\": \"Cart icon in top right corner, with a number indicating how many items in cart\"\n },\n {\n \"name\": \"Shopper should be able to remove product from shopping cart\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"cart\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849086,\n \"project_id\": 1027488\n },\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"project_id\": 1027488\n }\n ],\n \"current_state\": \"delivered\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728000,\n \"project_id\": 1027488,\n \"owner_ids\": [\n\n ],\n \"url\": \"http://www.pivotaltracker.com/story/show/66728000\",\n \"estimate\": 1\n },\n {\n \"name\": \"Cart manipulation should be AJAXy\",\n \"story_type\": \"feature\",\n \"requested_by_id\": 1266314,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"cart\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 7849086,\n \"project_id\": 1027488\n },\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"project_id\": 1027488\n }\n ],\n \"current_state\": \"finished\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728002,\n \"project_id\": 1027488,\n \"owner_ids\": [\n\n ],\n \"url\": \"http://www.pivotaltracker.com/story/show/66728002\",\n \"estimate\": 1\n },\n {\n \"name\": \"Some product photos not scaled properly when browsing products\",\n \"story_type\": \"bug\",\n \"requested_by_id\": 1266314,\n \"kind\": \"story\",\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"project_id\": 1027488\n }\n ],\n \"current_state\": \"started\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66728004,\n \"project_id\": 1027488,\n \"owner_ids\": [\n\n ],\n \"url\": \"http://www.pivotaltracker.com/story/show/66728004\"\n }\n ],\n \"start\": \"2014-03-17T07:00:00Z\",\n \"project_id\": 1027488,\n \"team_strength\": 1,\n \"number\": 6\n }\n]"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:28 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/iterations?scope=done&offset=-12","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"x-tracker-project-version":["1"],"cache-control":["private, max-age=0, must-revalidate"],"x-tracker-pagination-offset":["-12"],"etag":["\"5f632dec8cf809f0b82e3f7f5d91a801\""],"x-runtime":["522"],"x-tracker-pagination-returned":["5"],"x-tracker-pagination-limit":["10"],"x-tracker-pagination-total":["5"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"[\n {\n \"number\": 1,\n \"kind\": \"iteration\",\n \"finish\": \"2014-02-17T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-10T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Setup development environment\",\n \"kind\": \"story\",\n \"description\": \"We need 2 machines set up\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727974,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"requested_by_id\": 1266314,\n \"labels\": [\n\n ],\n \"story_type\": \"chore\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727974\"\n },\n {\n \"name\": \"Setup demo server\",\n \"kind\": \"story\",\n \"description\": \"Should be accessible from outside the network, with basic auth\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727976,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"deployment\",\n \"kind\": \"label\",\n \"id\": 7849078,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"chore\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727976\"\n },\n {\n \"name\": \"Admin should be able to login\",\n \"kind\": \"story\",\n \"description\": \"Admin should be a special user type. We can create the first admin user directly in the DB, but let's encrypt the password.\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727978,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727978\"\n },\n {\n \"name\": \"Admin should be able to create new product\",\n \"kind\": \"story\",\n \"description\": \"Product information includes title, description, price, SKU.\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727980,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727980\"\n },\n {\n \"name\": \"Admin should be able to upload product photo\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-11T00:00:00Z\",\n \"id\": 66727982,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727982\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 2,\n \"kind\": \"iteration\",\n \"finish\": \"2014-02-24T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-17T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Admin should be able to upload multiple product photos and mark one as the primary\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727984,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 3,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727984\"\n },\n {\n \"name\": \"Shopper should see list of products, with primary photo as thumbnail\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727986,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727986\"\n },\n {\n \"name\": \"Product browsing should be paginated, with 10 products per page\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727988,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727988\"\n },\n {\n \"name\": \"Make product browsing pagination AJAXy\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727990,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"estimate\": 2,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n },\n {\n \"name\": \"usability\",\n \"kind\": \"label\",\n \"id\": 7849084,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727990\"\n },\n {\n \"name\": \"Admin should be able to import multiple new products from CSV file\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-02-18T00:00:00Z\",\n \"id\": 66727992,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-10T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 3,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"id\": 7849080,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727992\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 3,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-03T08:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-02-24T08:00:00Z\",\n \"stories\": [\n {\n \"name\": \"Shopper should be able to click on a product, and see all product details, including photos\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T00:00:00Z\",\n \"id\": 66727994,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727994\"\n },\n {\n \"name\": \"Shopper should be able to add product to shopping cart\",\n \"kind\": \"story\",\n \"accepted_at\": \"2014-03-02T07:11:05Z\",\n \"id\": 66727996,\n \"project_id\": 1027488,\n \"current_state\": \"accepted\",\n \"owner_ids\": [\n\n ],\n \"created_at\": \"2014-02-17T00:00:00Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\",\n \"estimate\": 1,\n \"requested_by_id\": 1266314,\n \"labels\": [\n {\n \"name\": \"cart\",\n \"kind\": \"label\",\n \"id\": 7849086,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:05Z\",\n \"updated_at\": \"2014-03-02T07:11:05Z\"\n },\n {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"id\": 7849082,\n \"project_id\": 1027488,\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\"\n }\n ],\n \"story_type\": \"feature\",\n \"url\": \"http://www.pivotaltracker.com/story/show/66727996\"\n }\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 4,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-10T07:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-03-03T08:00:00Z\",\n \"stories\": [\n\n ],\n \"team_strength\": 1\n },\n {\n \"number\": 5,\n \"kind\": \"iteration\",\n \"finish\": \"2014-03-17T07:00:00Z\",\n \"project_id\": 1027488,\n \"start\": \"2014-03-10T07:00:00Z\",\n \"stories\": [\n\n ],\n \"team_strength\": 1\n }\n]"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:29 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/epics","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"cache-control":["private, max-age=0, must-revalidate"],"x-tracker-project-version":["1"],"etag":["\"fd893b81ac58cf4eb575d740e8475145\""],"x-runtime":["42"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"[\n {\n \"name\": \"Admin Users\",\n \"kind\": \"epic\",\n \"label\": {\n \"name\": \"admin\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849080,\n \"project_id\": 1027488\n },\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"id\": 1087314,\n \"url\": \"http://www.pivotaltracker.com/epic/show/1087314\",\n \"project_id\": 1027488,\n \"description\": \"Get the Admin users working on the site\"\n },\n {\n \"name\": \"Shoppers\",\n \"kind\": \"epic\",\n \"label\": {\n \"name\": \"shopping\",\n \"kind\": \"label\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"id\": 7849082,\n \"project_id\": 1027488\n },\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"id\": 1087316,\n \"url\": \"http://www.pivotaltracker.com/epic/show/1087316\",\n \"project_id\": 1027488,\n \"description\": \"Allow shoppers to use the site\"\n }\n]"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:26 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"cache-control":["private, max-age=0, must-revalidate"],"etag":["\"dbf4aea2a2935eefffe4468d24191436\""],"x-runtime":["36"],"x-tracker-project-version":["1"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"{\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"version\": 1,\n \"current_iteration_number\": 6,\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"enable_following\": true,\n \"time_zone\": {\n \"offset\": \"-07:00\",\n \"olson_name\": \"America/Los_Angeles\",\n \"kind\": \"time_zone\"\n },\n \"point_scale_is_custom\": false,\n \"account_id\": 621384,\n \"atom_enabled\": false,\n \"has_google_domain\": false,\n \"start_time\": \"2014-02-10T08:00:00Z\",\n \"number_of_done_iterations_to_show\": 12,\n \"week_start_day\": \"Monday\",\n \"id\": 1027488,\n \"enable_tasks\": true,\n \"bugs_and_chores_are_estimatable\": false,\n \"point_scale\": \"0,1,2,3\",\n \"public\": false,\n \"enable_incoming_emails\": true,\n \"profile_content\": \"This is a demo project, created by Tracker, with example stories for a simple shopping web site.\",\n \"velocity_averaged_over\": 3,\n \"name\": \"My Sample Project\",\n \"iteration_length\": 1,\n \"kind\": \"project\",\n \"initial_velocity\": 10,\n \"enable_planned_mode\": false\n}"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:26 GMT"}],"recorded_with":"VCR 2.8.0"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488?fields=%3Adefault%2Cepics%28%3Adefault%2Clabel%28name%29%29","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.0.0 (x86_64-darwin13.0.2; ruby) TrackerApi/0.0.1 Faraday/0.8.9"],"X-TrackerToken":["0de3ac29f13082f0c16ed76f3f3f6895"]}},"response":{"status":{"code":200,"message":null},"headers":{"content-type":["application/json; charset=utf-8"],"transfer-encoding":["chunked"],"connection":["close"],"status":["200"],"x-powered-by":["Phusion Passenger (mod_rails/mod_rack) 3.0.14"],"x-tracker-project-version":["1"],"cache-control":["private, max-age=0, must-revalidate"],"etag":["\"36004bb89c883ff022386d617b8edc8d\""],"x-runtime":["104"],"server":["nginx/1.2.2 + Phusion Passenger 3.0.14 (mod_rails/mod_rack)"],"access-control-allow-origin":["*"],"access-control-allow-credentials":["false"],"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],"access-control-allow-headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"]},"body":{"encoding":"UTF-8","string":"{\n \"enable_following\": true,\n \"atom_enabled\": false,\n \"public\": false,\n \"version\": 1,\n \"account_id\": 621384,\n \"enable_tasks\": true,\n \"name\": \"My Sample Project\",\n \"kind\": \"project\",\n \"velocity_averaged_over\": 3,\n \"profile_content\": \"This is a demo project, created by Tracker, with example stories for a simple shopping web site.\",\n \"enable_planned_mode\": false,\n \"bugs_and_chores_are_estimatable\": false,\n \"point_scale\": \"0,1,2,3\",\n \"id\": 1027488,\n \"current_iteration_number\": 6,\n \"updated_at\": \"2014-03-02T07:11:04Z\",\n \"created_at\": \"2014-03-02T07:11:04Z\",\n \"enable_incoming_emails\": true,\n \"has_google_domain\": false,\n \"number_of_done_iterations_to_show\": 12,\n \"epics\": [\n {\n \"name\": \"Admin Users\",\n \"kind\": \"epic\",\n \"description\": \"Get the Admin users working on the site\",\n \"project_id\": 1027488,\n \"id\": 1087314,\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"url\": \"http://www.pivotaltracker.com/epic/show/1087314\",\n \"label\": {\n \"name\": \"admin\",\n \"id\": 7849080\n }\n },\n {\n \"name\": \"Shoppers\",\n \"kind\": \"epic\",\n \"description\": \"Allow shoppers to use the site\",\n \"project_id\": 1027488,\n \"id\": 1087316,\n \"updated_at\": \"2014-03-02T07:11:07Z\",\n \"created_at\": \"2014-03-02T07:11:07Z\",\n \"url\": \"http://www.pivotaltracker.com/epic/show/1087316\",\n \"label\": {\n \"name\": \"shopping\",\n \"id\": 7849082\n }\n }\n ],\n \"start_time\": \"2014-02-10T08:00:00Z\",\n \"iteration_length\": 1,\n \"initial_velocity\": 10,\n \"point_scale_is_custom\": false,\n \"week_start_day\": \"Monday\",\n \"time_zone\": {\n \"kind\": \"time_zone\",\n \"olson_name\": \"America/Los_Angeles\",\n \"offset\": \"-07:00\"\n }\n}"},"http_version":null},"recorded_at":"Sun, 23 Mar 2014 06:28:27 GMT"}],"recorded_with":"VCR 2.8.0"}