class StubRequests::CallbackRegistry
Class
Registry handles callbacks to webmock requests
@author Mikael Henriksson <mikael@zoolutions.se> @since 0.1.3
Attributes
@!attribute [r] callbacks
@return [Concurrent::Array<Callback>] a list of callbacks
Public Class Methods
Used by Singleton
# File lib/stub_requests/callback_registry.rb, line 39 def initialize @callbacks = Concurrent::Array.new end
Public Instance Methods
Notifies subscribers that a request was made
@param [RequestStub] request_stub the stubbed request
@return [void]
# File lib/stub_requests/callback_registry.rb, line 95 def invoke_callbacks(request_stub) return unless (callback = find_by(request_stub.service_id, request_stub.endpoint_id, request_stub.verb)) callback.call(request_stub) end
Register to a service endpoint call
@param [Symbol] service_id the id of a service @param [Symbol] endpoint_id the id of an endpoint @param [optional, Symbol] verb the HTTP verb to subscribe to @param [proc] block the callback to use for when.a request was made
@return [Callback] the added callback
# File lib/stub_requests/callback_registry.rb, line 63 def register(service_id, endpoint_id, verb, block) callback = find_by(service_id, endpoint_id, verb) return callback if callback callback = Callback.new(service_id, endpoint_id, verb, block) callbacks.push(callback) callback end
Resets the map with registered services
@api private
# File lib/stub_requests/callback_registry.rb, line 48 def reset callbacks.clear end
Unregister to a service endpoint call
@param [Symbol] service_id the id of a service @param [Symbol] endpoint_id the id of an endpoint @param [optional, Symbol] verb the HTTP verb to subscribe to
@return [Callback] the deleted callback
# File lib/stub_requests/callback_registry.rb, line 82 def unregister(service_id, endpoint_id, verb) return unless (callback = find_by(service_id, endpoint_id, verb)) callbacks.delete(callback) end
Private Instance Methods
Finds a callback for a service endpoint
@param [Symbol] service_id the id of a service @param [Symbol] endpoint_id the id of an endpoint @param [optional, Symbol] verb the HTTP verb to subscribe to
@return [Callback]
# File lib/stub_requests/callback_registry.rb, line 113 def find_by(service_id, endpoint_id, verb) find do |sub| sub.service_id == service_id && sub.endpoint_id == endpoint_id && ([sub.verb, verb].include?(:any) || sub.verb == verb) end end