Sha256: b51c769a57987975ffaa4dc2a93986353520d35f0b15fc3700f932fdf799e89a

Contents?: true

Size: 1.06 KB

Versions: 2

Compression:

Stored size: 1.06 KB

Contents

require "logger"
require "net/http"
require "net/https"
require "benchmark"

require "samuel/net_http"
require "samuel/request"


module Samuel
  extend self

  attr_writer :config, :logger

  def logger
    @logger = nil if !defined?(@logger)
    return @logger if !@logger.nil?

    if defined?(RAILS_DEFAULT_LOGGER)
      @logger = RAILS_DEFAULT_LOGGER
    else
      @logger = Logger.new(STDOUT)
    end
  end

  def config
    Thread.current[:__samuel_config] ? Thread.current[:__samuel_config] : @config
  end

  def log_request(http, request, &block)
    request = Request.new(http, request, block)
    request.execute_and_log!
    request.response
  end

  def with_config(options = {})
    original_config = config.dup
    nested = !Thread.current[:__samuel_config].nil?

    Thread.current[:__samuel_config] = original_config.merge(options)
    yield
    Thread.current[:__samuel_config] = nested ? original_config : nil
  end

  def reset_config
    Thread.current[:__samuel_config] = nil
    @config = {:label => "HTTP", :filtered_params => []}
  end

end

Samuel.reset_config

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
chrisk-samuel-0.2.0 lib/samuel.rb
samuel-0.2.0 lib/samuel.rb