Sha256: ba167aa9d560999585630eb0bc077410439b83f792f914f642b3db0e5344f0f7

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require "tcr/cassette"
require "tcr/configuration"
require "tcr/errors"
require "tcr/recordable"
require "tcr/socket_extension"
require "tcr/ssl_socket_extension"
require "tcr/version"
require "socket"
require "json"

module TCR
  ALL_PORTS = '*'

  extend self

  def configure
    yield configuration
  end

  def configuration
    @configuration ||= Configuration.new
  end

  def cassette
    @cassette
  end

  def cassette=(v)
    @cassette = v
  end

  def disabled
    @disabled || false
  end

  def disabled=(v)
    @disabled = v
  end

  def record_port?(port)
    !disabled && configuration.hook_tcp_ports == ALL_PORTS || configuration.hook_tcp_ports.include?(port)
  end

  def use_cassette(name, options = {}, &block)
    raise ArgumentError, "`TCR.use_cassette` requires a block." unless block
    begin
      TCR.cassette = Cassette.build(name)
      yield TCR.cassette
    ensure
      TCR.cassette.finish
      TCR.cassette = nil
    end
  end

  def turned_off(&block)
    raise ArgumentError, "`TCR.turned_off` requires a block." unless block
    begin
      disabled = true
      yield
    ensure
      disabled = false
    end
  end
end

TCPSocket.prepend(TCR::SocketExtension)
OpenSSL::SSL::SSLSocket.send(:include, TCR::SSLSocketExtension)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shopify-tcr-0.0.5.pre.shopify lib/tcr.rb