Class: TrackerFetchedMapper

Inherits:
Object
  • Object
show all
Defined in:
lib/tracker_fetched_mapper.rb

Instance Method Summary collapse

Constructor Details

#initialize(renderer) ⇒ TrackerFetchedMapper

Returns a new instance of TrackerFetchedMapper.



3
4
5
# File 'lib/tracker_fetched_mapper.rb', line 3

def initialize(renderer)
  @renderer = renderer
end

Instance Method Details

#execute(story_commit) ⇒ Object



7
8
9
# File 'lib/tracker_fetched_mapper.rb', line 7

def execute(story_commit)
  @renderer.render(map(story_commit))
end

#fetch(stories) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/tracker_fetched_mapper.rb', line 19

def fetch(stories)
  require 'rubygems'
  require 'net/http'
  require 'uri'
  require 'nokogiri'

  request = "http://www.pivotaltracker.com/services/v3/projects/#{ENV['TRACKER_PROJECT_ID']}/stories?filter=id:#{stories.join(',')}&includedone:true"
  resource_uri = URI.parse(request)
  response = Net::HTTP.start(resource_uri.host, resource_uri.port) do |http|
    http.get(resource_uri.to_s, {'X-TrackerToken' => ENV['TRACKER_TOKEN']})
  end

  doc = Nokogiri::XML(response.body)

  {}.tap do |h|
    doc.xpath('//stories/story').map do |e|
      h[e.xpath('id').text] = e.xpath('current_state').text.to_sym
    end
  end
end

#map(story_commit) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/tracker_fetched_mapper.rb', line 11

def map(story_commit)
  {}.tap do |h|
    fetch(story_commit.keys).each do |story, state|
      h[story_commit[story]] = {'story' => story, 'state' => state}
    end
  end
end