Sha256: e845fe3b88bacc225489b575f96d15335b832b58693dd707e117b6762a5795f7

Contents?: true

Size: 974 Bytes

Versions: 1

Compression:

Stored size: 974 Bytes

Contents

# frozen_string_literal: true

require_relative "little_sniffer/version"
require_relative "little_sniffer/adapters/net_http_adapter"

# LittleSniffer allows to log http request locally
class LittleSniffer
  UnsupportedAdapterError = Class.new(StandardError)
  HandlerDoesNotMatchTheInterfaceError = Class.new(StandardError)

  ADAPTERS_MAP = {
    net_http: Adapters::NetHttpAdapter
  }.freeze

  def initialize(handler, adapter = :net_http, &block)
    adapter = validate_adapter(adapter)
    validate_handler(handler)

    adapter.new(handler).sniff(&block)
  end

  private

  def validate_handler(handler)
    return if handler.respond_to?(:handle)

    raise HandlerDoesNotMatchTheInterfaceError
  end

  def validate_adapter(adapter)
    adapter = ADAPTERS_MAP[adapter]

    return adapter if adapter

    error_message = "maybe you have misspelled it. Appropriate types are: #{ADAPTERS_MAP.keys.join(', ')}"
    raise UnsupportedAdapterError, error_message
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
little_sniffer-0.1.1 lib/little_sniffer.rb