Class: EventStore::Stream

Inherits:
Object
  • Object
show all
Includes:
HTTParty
Defined in:
lib/eventstore/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(url) ⇒ Stream

Returns a new instance of Stream.



78
79
80
81
# File 'lib/eventstore/client.rb', line 78

def initialize url
  @page_url = url
  @id_pointer = url
end

Instance Method Details

#eventsObject



82
83
84
# File 'lib/eventstore/client.rb', line 82

def events
  event_from 0
end

#events_from(event_id, direction = :newer) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# 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