Class: EventStoreClient::StoreAdapter::Api::Client
- Inherits:
-
Object
- Object
- EventStoreClient::StoreAdapter::Api::Client
- Defined in:
- lib/event_store_client/store_adapter/api/client.rb
Constant Summary collapse
- WrongExpectedEventVersion =
Class.new(StandardError)
Instance Method Summary collapse
- #ack(url) ⇒ Object
- #append_to_stream(stream_name, events, expected_version: nil) ⇒ Object
- #consume_feed(stream_name, subscription_name, count: 1, long_poll: 0, resolve_links: true) ⇒ Object
- #delete_stream(stream_name, hard_delete) ⇒ Object
- #join_streams(name, streams) ⇒ Object
- #link_to(stream_name, events, expected_version: nil) ⇒ Object
- #read(stream_name, direction: 'forward', start: 0, count: per_page, resolve_links: true) ⇒ Object
- #subscribe_to_stream(stream_name, subscription_name, stats: true, start_from: 0, retries: 5) ⇒ Object
Instance Method Details
#ack(url) ⇒ Object
112 113 114 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 112 def ack(url) make_request(:post, url) end |
#append_to_stream(stream_name, events, expected_version: nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 9 def append_to_stream(stream_name, events, expected_version: nil) headers = { 'ES-ExpectedVersion' => expected_version&.to_s }.reject { |_key, val| val.nil? || val.empty? } data = build_events_data(events) response = make_request(:post, "/streams/#{stream_name}", body: data, headers: headers) validate_response(response, expected_version) response end |
#consume_feed(stream_name, subscription_name, count: 1, long_poll: 0, resolve_links: true) ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 77 def consume_feed( stream_name, subscription_name, count: 1, long_poll: 0, resolve_links: true ) headers = long_poll.positive? ? { 'ES-LongPoll' => long_poll.to_s } : {} headers['Content-Type'] = 'application/vnd.eventstore.competingatom+json' headers['Accept'] = 'application/vnd.eventstore.competingatom+json' headers['ES-ResolveLinkTos'] = resolve_links.to_s make_request( :get, "/subscriptions/#{stream_name}/#{subscription_name}/#{count}", headers: headers ) end |
#delete_stream(stream_name, hard_delete) ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 20 def delete_stream(stream_name, hard_delete) headers = { 'ES-HardDelete' => hard_delete.to_s }.reject { |_key, val| val.empty? } make_request(:delete, "/streams/#{stream_name}", body: {}, headers: headers) end |
#join_streams(name, streams) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 41 def join_streams(name, streams) data = " fromStreams(\#{streams})\n .when({\n $any: function(s,e) {\n linkTo(\"\#{name}\", e)\n }\n })\n STRING\n\n make_request(\n :post,\n \"/projections/continuous?name=\#{name}&type=js&enabled=true&emit=true%26trackemittedstreams=true\", # rubocop:disable Metrics/LineLength\n body: data,\n headers: {}\n )\nend\n" |
#link_to(stream_name, events, expected_version: nil) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 96 def link_to(stream_name, events, expected_version: nil) data = build_linkig_data(events) headers = { 'ES-ExpectedVersion' => expected_version&.to_s }.reject { |_key, val| val.nil? || val.empty? } response = make_request( :post, "/streams/#{stream_name}", body: data, headers: headers ) validate_response(response, expected_version) response end |
#read(stream_name, direction: 'forward', start: 0, count: per_page, resolve_links: true) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 28 def read(stream_name, direction: 'forward', start: 0, count: per_page, resolve_links: true) headers = { 'ES-ResolveLinkTos' => resolve_links.to_s, 'Accept' => 'application/vnd.eventstore.atom+json' } make_request( :get, "/streams/#{stream_name}/#{start}/#{direction}/#{count}", headers: headers ) end |
#subscribe_to_stream(stream_name, subscription_name, stats: true, start_from: 0, retries: 5) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/event_store_client/store_adapter/api/client.rb', line 59 def subscribe_to_stream( stream_name, subscription_name, stats: true, start_from: 0, retries: 5 ) make_request( :put, "/subscriptions/#{stream_name}/#{subscription_name}", body: { extraStatistics: stats, startFrom: start_from, maxRetryCount: retries, resolveLinktos: true }, headers: { 'Content-Type' => 'application/json' } ) end |