Class: EventStore::HTTP::ReadEvent
- Inherits:
-
Object
- Object
- EventStore::HTTP::ReadEvent
show all
- Includes:
- Request, Log::Dependency
- Defined in:
- lib/event_store/http/read_event.rb,
lib/event_store/http/read_event/log_text.rb,
lib/event_store/http/read_event/substitute.rb
Defined Under Namespace
Modules: LogText, Substitute
Constant Summary
collapse
- Error =
Class.new StandardError
- EventNotFoundError =
Class.new Error
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Request
included
Instance Attribute Details
#output_schema ⇒ Object
11
12
13
|
# File 'lib/event_store/http/read_event.rb', line 11
def output_schema
@output_schema ||= MediaTypes::Atom::Event
end
|
Instance Method Details
#build_request(uri) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# 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) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# 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) ⇒ Object
44
45
46
47
48
49
50
51
52
|
# 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
|