Last active
August 29, 2015 14:16
-
-
Save litch/c89e5d4b74c011898b4e to your computer and use it in GitHub Desktop.
Vert.X Polling EventStore Client
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'vertx' | |
@client = Vertx::HttpClient.new | |
@client.port = 2113 | |
@client.host = 'localhost' | |
module TestStream | |
class WriteEvent | |
attr_reader :event_data | |
attr_reader :client | |
def self.! | |
new(client).! | |
end | |
def self.client | |
@client ||= Vertx::HttpClient.new.tap do |client| | |
p "Initializing Client" | |
client.port = 2113 | |
client.host = 'localhost' | |
end | |
end | |
def initialize(client) | |
@event_data = { "something" => "has data" }.to_json | |
@client = client | |
end | |
def ! | |
request = client.post('/streams/newstream') do |resp| | |
puts "got response #{resp.status_code}" | |
resp.body_handler do |body| | |
puts "The total body received was #{body.length} bytes" | |
puts body | |
end | |
end | |
request.put_header('ES-EventType', 'SomeEvent') | |
request.put_header("ES-EventId", java.util.UUID.randomUUID().to_s) | |
request.put_header('Accept', 'application/vnd.eventstore.atom+json') | |
request.put_header('Content-Length', event_data.length) | |
request.put_header('Content-Type', 'application/json') | |
request.write_str(event_data) | |
request.end | |
end | |
end | |
class Poll | |
attr_reader :etag | |
attr_reader :client | |
def self.! | |
new(client).! | |
end | |
def self.client | |
@client ||= Vertx::HttpClient.new.tap do |client| | |
p "Initializing Client" | |
client.port = 2113 | |
client.host = 'localhost' | |
end | |
end | |
def initialize(client) | |
@client = client | |
end | |
def ! | |
Vertx.set_periodic(50) { make_request } | |
end | |
def make_request | |
request = @client.get('/streams/newstream?embed=body') do |resp| | |
puts "got response #{resp.status_code}" | |
resp.body_handler do |body| | |
puts "The total body received was #{body.length} bytes" | |
if body.length > 0 | |
parsed_body = JSON.parse(body.to_s) | |
@etag = parsed_body['eTag'] | |
something = parsed_body['entries'].take_while { |i| i['title'] != @most_recent_event } | |
@most_recent_event = parsed_body['entries'].first['title'] | |
HandleEvent.!(something) | |
end | |
end | |
end | |
request.put_header('If-None-Match', etag) | |
request.put_header('Accept', 'application/vnd.eventstore.atom+json') | |
request.end | |
end | |
end | |
class HandleEvent | |
def self.!(event) | |
puts event | |
end | |
end | |
end | |
Vertx.set_periodic(500) { TestStream::WriteEvent.! } | |
TestStream::Poll.! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
☹ ~/code/vertx-evenstore-http-client[master]% vertx run main.rb | |
"Initializing Client" | |
Succeeded in deploying verticle | |
got response 200 | |
The total body received was 17773 bytes | |
{"eventId"=>"ac4250a7-1573-4447-a63a-7100b5c15efe", "eventType"=>"SomeEvent", "eventNumber"=>116, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>116, "positionStreamId"=>"newstream", "title"=>"116@newstream", "id"=>"http://localhost:2113/streams/newstream/116", "updated"=>"2015-03-01T22:55:24.022173Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/116", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/116", "relation"=>"alternate"}]} | |
{"eventId"=>"c4bbd0dd-250d-40f3-b869-114b873894fb", "eventType"=>"SomeEvent", "eventNumber"=>115, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>115, "positionStreamId"=>"newstream", "title"=>"115@newstream", "id"=>"http://localhost:2113/streams/newstream/115", "updated"=>"2015-03-01T22:55:23.524422Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/115", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/115", "relation"=>"alternate"}]} | |
{"eventId"=>"c9b247fb-4723-4261-821b-c17459db333a", "eventType"=>"SomeEvent", "eventNumber"=>114, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>114, "positionStreamId"=>"newstream", "title"=>"114@newstream", "id"=>"http://localhost:2113/streams/newstream/114", "updated"=>"2015-03-01T22:55:23.022099Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/114", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/114", "relation"=>"alternate"}]} | |
{"eventId"=>"230fa5a2-7c04-4e52-8aa9-275e85bb0a63", "eventType"=>"SomeEvent", "eventNumber"=>113, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>113, "positionStreamId"=>"newstream", "title"=>"113@newstream", "id"=>"http://localhost:2113/streams/newstream/113", "updated"=>"2015-03-01T22:55:22.525291Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/113", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/113", "relation"=>"alternate"}]} | |
{"eventId"=>"ee16b585-7ebe-4ecd-b0cf-bbef20d9c743", "eventType"=>"SomeEvent", "eventNumber"=>112, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>112, "positionStreamId"=>"newstream", "title"=>"112@newstream", "id"=>"http://localhost:2113/streams/newstream/112", "updated"=>"2015-03-01T22:55:22.025789Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/112", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/112", "relation"=>"alternate"}]} | |
{"eventId"=>"e4f621cf-e350-4698-bac7-10fc814d35b5", "eventType"=>"SomeEvent", "eventNumber"=>111, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>111, "positionStreamId"=>"newstream", "title"=>"111@newstream", "id"=>"http://localhost:2113/streams/newstream/111", "updated"=>"2015-03-01T22:55:21.522428Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/111", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/111", "relation"=>"alternate"}]} | |
{"eventId"=>"c3872faf-c476-4a16-b54e-c999f138c2ac", "eventType"=>"SomeEvent", "eventNumber"=>110, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>110, "positionStreamId"=>"newstream", "title"=>"110@newstream", "id"=>"http://localhost:2113/streams/newstream/110", "updated"=>"2015-03-01T22:55:21.022424Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/110", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/110", "relation"=>"alternate"}]} | |
{"eventId"=>"06b98d1d-0039-4ea9-aa52-644b719a7abf", "eventType"=>"SomeEvent", "eventNumber"=>109, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>109, "positionStreamId"=>"newstream", "title"=>"109@newstream", "id"=>"http://localhost:2113/streams/newstream/109", "updated"=>"2015-03-01T22:55:20.526876Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/109", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/109", "relation"=>"alternate"}]} | |
{"eventId"=>"f192910c-76af-44af-a734-aed91864bde4", "eventType"=>"SomeEvent", "eventNumber"=>108, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>108, "positionStreamId"=>"newstream", "title"=>"108@newstream", "id"=>"http://localhost:2113/streams/newstream/108", "updated"=>"2015-03-01T22:55:20.029185Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/108", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/108", "relation"=>"alternate"}]} | |
{"eventId"=>"811ccf0a-4695-4ac6-9e9b-b76407c0ed4c", "eventType"=>"SomeEvent", "eventNumber"=>107, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>107, "positionStreamId"=>"newstream", "title"=>"107@newstream", "id"=>"http://localhost:2113/streams/newstream/107", "updated"=>"2015-03-01T22:55:19.526705Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/107", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/107", "relation"=>"alternate"}]} | |
{"eventId"=>"b9dca452-91d3-416e-a668-a5e13392ee65", "eventType"=>"SomeEvent", "eventNumber"=>106, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>106, "positionStreamId"=>"newstream", "title"=>"106@newstream", "id"=>"http://localhost:2113/streams/newstream/106", "updated"=>"2015-03-01T22:55:19.025808Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/106", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/106", "relation"=>"alternate"}]} | |
{"eventId"=>"318cc063-beb1-4615-a00f-24b9450c74f3", "eventType"=>"SomeEvent", "eventNumber"=>105, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>105, "positionStreamId"=>"newstream", "title"=>"105@newstream", "id"=>"http://localhost:2113/streams/newstream/105", "updated"=>"2015-03-01T22:55:18.525478Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/105", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/105", "relation"=>"alternate"}]} | |
{"eventId"=>"4923f4a1-8864-4557-8112-add9b4bfd24d", "eventType"=>"SomeEvent", "eventNumber"=>104, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>104, "positionStreamId"=>"newstream", "title"=>"104@newstream", "id"=>"http://localhost:2113/streams/newstream/104", "updated"=>"2015-03-01T22:55:18.025722Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/104", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/104", "relation"=>"alternate"}]} | |
{"eventId"=>"70d388f9-c124-4881-b34d-3b39e97ac309", "eventType"=>"SomeEvent", "eventNumber"=>103, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>103, "positionStreamId"=>"newstream", "title"=>"103@newstream", "id"=>"http://localhost:2113/streams/newstream/103", "updated"=>"2015-03-01T22:55:17.526042Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/103", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/103", "relation"=>"alternate"}]} | |
{"eventId"=>"04fbe888-1363-4632-bf08-6e5dd4bdfff8", "eventType"=>"SomeEvent", "eventNumber"=>102, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>102, "positionStreamId"=>"newstream", "title"=>"102@newstream", "id"=>"http://localhost:2113/streams/newstream/102", "updated"=>"2015-03-01T22:55:17.02592Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/102", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/102", "relation"=>"alternate"}]} | |
{"eventId"=>"259a3a9d-8f6a-4191-8219-e6b5f92118d5", "eventType"=>"SomeEvent", "eventNumber"=>101, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>101, "positionStreamId"=>"newstream", "title"=>"101@newstream", "id"=>"http://localhost:2113/streams/newstream/101", "updated"=>"2015-03-01T22:55:16.524159Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/101", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/101", "relation"=>"alternate"}]} | |
{"eventId"=>"7fab0dc9-ebec-4035-baef-adbdffab5254", "eventType"=>"SomeEvent", "eventNumber"=>100, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>100, "positionStreamId"=>"newstream", "title"=>"100@newstream", "id"=>"http://localhost:2113/streams/newstream/100", "updated"=>"2015-03-01T22:55:16.021939Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/100", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/100", "relation"=>"alternate"}]} | |
{"eventId"=>"51234857-d9c0-4b90-b272-7c40aa36fe7e", "eventType"=>"SomeEvent", "eventNumber"=>99, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>99, "positionStreamId"=>"newstream", "title"=>"99@newstream", "id"=>"http://localhost:2113/streams/newstream/99", "updated"=>"2015-03-01T22:55:15.525768Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/99", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/99", "relation"=>"alternate"}]} | |
{"eventId"=>"3bebef84-c583-44da-b1dc-dd4c2c20146e", "eventType"=>"SomeEvent", "eventNumber"=>98, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>98, "positionStreamId"=>"newstream", "title"=>"98@newstream", "id"=>"http://localhost:2113/streams/newstream/98", "updated"=>"2015-03-01T22:55:15.025032Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/98", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/98", "relation"=>"alternate"}]} | |
{"eventId"=>"e2d054fc-50ab-4e6e-a28d-2fd4bdaae3d9", "eventType"=>"SomeEvent", "eventNumber"=>97, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>97, "positionStreamId"=>"newstream", "title"=>"97@newstream", "id"=>"http://localhost:2113/streams/newstream/97", "updated"=>"2015-03-01T22:55:14.521826Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/97", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/97", "relation"=>"alternate"}]} | |
got response 200 | |
The total body received was 17773 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
"Initializing Client" | |
got response 304 | |
The total body received was 0 bytes | |
got response 201 | |
The total body received was 0 bytes | |
got response 200 | |
The total body received was 17779 bytes | |
{"eventId"=>"5558f1cd-bf95-4e37-918d-b2a391d6528d", "eventType"=>"SomeEvent", "eventNumber"=>117, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>117, "positionStreamId"=>"newstream", "title"=>"117@newstream", "id"=>"http://localhost:2113/streams/newstream/117", "updated"=>"2015-03-01T22:57:47.396366Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/117", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/117", "relation"=>"alternate"}]} | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 201 | |
The total body received was 0 bytes | |
got response 200 | |
The total body received was 17785 bytes | |
{"eventId"=>"7016e79a-1ba5-4f66-ba56-e6e95008a343", "eventType"=>"SomeEvent", "eventNumber"=>118, "data"=>"{\"something\":\"has data\"}", "streamId"=>"newstream", "isJson"=>true, "isMetaData"=>false, "isLinkMetaData"=>false, "positionEventNumber"=>118, "positionStreamId"=>"newstream", "title"=>"118@newstream", "id"=>"http://localhost:2113/streams/newstream/118", "updated"=>"2015-03-01T22:57:47.889381Z", "author"=>{"name"=>"EventStore"}, "summary"=>"SomeEvent", "links"=>[{"uri"=>"http://localhost:2113/streams/newstream/118", "relation"=>"edit"}, {"uri"=>"http://localhost:2113/streams/newstream/118", "relation"=>"alternate"}]} | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes | |
got response 304 | |
The total body received was 0 bytes |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment