class EventStore::Stream
Public Class Methods
new(url)
click to toggle source
# File lib/eventstore/client.rb, line 78 def initialize url @page_url = url @id_pointer = url end
Public Instance Methods
events()
click to toggle source
# File lib/eventstore/client.rb, line 82 def events event_from 0 end
events_from(event_id, direction=:newer)
click to toggle source
# File lib/eventstore/client.rb, line 85 def events_from event_id, direction=:newer if event_id.is_a?(Fixnum) event_id = "#{@page_url}/#{event_id}" end if direction == :newer @id_pointer = "#{event_id}/forward/20" else @id_pointer = "#{event_id}/backward/20" end Enumerator.new do |yielder| while @id_pointer feed_data = feed_data_from_pointer break if feed_data.chomp == "" feed = Feedjira::Feed.parse feed_data entries = feed.entries if direction == :newer entries = entries.reverse end entries.each do |entry| yielder << { body: fetch_event_body(entry.url), type: entry.summary, updated: entry.updated, id: entry.id } end @id_pointer = entries.length == 0 ? nil : feed.send(direction) end end end
Private Instance Methods
feed_data()
click to toggle source
# File lib/eventstore/client.rb, line 115 def feed_data self.class.get(@page_url).body end
feed_data_from_pointer()
click to toggle source
# File lib/eventstore/client.rb, line 118 def feed_data_from_pointer self.class.get(@id_pointer).body end
fetch_event_body(url)
click to toggle source
# File lib/eventstore/client.rb, line 121 def fetch_event_body url JSON.load( self.class.get(url, { headers: { 'Accept' => 'application/json' }} ).body ) end