class EventStore::HTTP::ReadEvent
Constants
- Error
- EventNotFoundError
Attributes
output_schema[W]
Public Instance Methods
build_request(uri)
click to toggle source
# File lib/event_store/http/read_event.rb, line 54 def build_request(uri) if uri.is_a? URI path = uri.path elsif uri.start_with? 'http' path = URI.parse(uri).path else path = uri end request = Net::HTTP::Get.new path request['Accept'] = MediaTypes::Atom.mime request end
call(uri=nil, stream: nil, position: nil)
click to toggle source
# File lib/event_store/http/read_event.rb, line 15 def call(uri=nil, stream: nil, position: nil) uri ||= self.event_path stream, position logger.trace { "Reading event (#{LogText.attributes uri})" } request = build_request uri response = connection.request request case response when Net::HTTPOK event = Transform::Read.(response.body, :json, output_schema) logger.info { "Read event done (#{LogText.attributes uri, response: response}, OutputSchema: #{output_schema})" } event when Net::HTTPNotFound error_message = "Event not found (#{LogText.attributes uri, response: response})" logger.error { error_message } raise EventNotFoundError, error_message else error_message = "Client error (#{LogText.attributes uri, response: response})" logger.error { error_message } raise Error, error_message end end
event_path(stream, position)
click to toggle source
# File lib/event_store/http/read_event.rb, line 44 def event_path(stream, position) if stream.nil? || position.nil? error_message = "Both stream and position must be specified when URI is omitted (Stream: #{stream.inspect}, Position: #{position.inspect})" logger.error { error_message } raise ArgumentError, error_message end "/streams/#{stream}/#{position}" end
output_schema()
click to toggle source
# File lib/event_store/http/read_event.rb, line 11 def output_schema @output_schema ||= MediaTypes::Atom::Event end