Sha256: f00798542b9d65eb32b24778c07c823218979e958576ffd1824d42f75523551c

Contents?: true

Size: 1.23 KB

Versions: 11

Compression:

Stored size: 1.23 KB

Contents

module Breakers
  # The client contains all of the data required to operate Breakers. Creating one and
  # setting it as the global client allows the middleware to operate without parameters
  class Client
    attr_reader :services
    attr_reader :plugins
    attr_reader :redis_connection
    attr_reader :logger

    # Create the Client object.
    #
    # @param redis_connection [Redis] the Redis connection or namespace to use
    # @param services [Breakers::Service] a list of services to be monitored
    # @param plugins [Object] a list of plugins to call as events occur
    # @param logger [Logger] a logger implementing the Ruby Logger interface to call as events occur
    def initialize(redis_connection:, services:, plugins: nil, logger: nil)
      @redis_connection = redis_connection
      @services = Array(services)
      @plugins = Array(plugins)
      @logger = logger
    end

    # Given a request environment, return the service that should handle it.
    #
    # @param request_env [Faraday::Env] the request environment
    # @return [Breakers::Service] the service object
    def service_for_request(request_env:)
      @services.find do |service|
        service.handles_request?(request_env: request_env)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
breakers-0.7.1 lib/breakers/client.rb
breakers-0.6.0 lib/breakers/client.rb
breakers-0.5.0 lib/breakers/client.rb
breakers-0.4.0 lib/breakers/client.rb
breakers-0.3.0 lib/breakers/client.rb
breakers-0.2.4 lib/breakers/client.rb
breakers-0.2.3 lib/breakers/client.rb
breakers-0.2.2 lib/breakers/client.rb
breakers-0.2.1 lib/breakers/client.rb
breakers-0.2.0 lib/breakers/client.rb
breakers-0.1.1 lib/breakers/client.rb