Class: TrackerFetchedMapper
- Inherits:
-
Object
- Object
- TrackerFetchedMapper
- Defined in:
- lib/tracker_fetched_mapper.rb
Instance Method Summary collapse
- #execute(story_commit) ⇒ Object
- #fetch(stories) ⇒ Object
-
#initialize(renderer) ⇒ TrackerFetchedMapper
constructor
A new instance of TrackerFetchedMapper.
- #map(story_commit) ⇒ Object
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 |