Sha256: b1f46e5eeb3b0dfdd8e61d795efed51ac89574be4413fa76e44e882ea9dc838a

Contents?: true

Size: 986 Bytes

Versions: 4

Compression:

Stored size: 986 Bytes

Contents

require 'net/http'

module Net
  class HTTP
    def request_with_vcr(request, body = nil, &block)
      uri = URI.parse(VCR.http_stubbing_adapter.request_uri(self, request))

      if VCR::LOCALHOST_ALIASES.include?(uri.host) && VCR.http_stubbing_adapter.ignore_localhost?
        VCR.http_stubbing_adapter.with_http_connections_allowed_set_to(true) do
          return request_without_vcr(request, body, &block)
        end
      end

      response = request_without_vcr(request, body)

      if started? && !VCR.http_stubbing_adapter.request_stubbed?(request.method.downcase.to_sym, uri)
        http_interaction = VCR::HTTPInteraction.from_net_http_objects(self, request, response)
        response.extend VCR::Net::HTTPResponse # "unwind" the response

        VCR.record_http_interaction(http_interaction)
      end

      yield response if block_given?
      response
    end
    alias_method :request_without_vcr, :request
    alias_method :request, :request_with_vcr
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
vcr-1.0.3 lib/vcr/extensions/net_http.rb
vcr-1.0.2 lib/vcr/extensions/net_http.rb
vcr-1.0.1 lib/vcr/extensions/net_http.rb
vcr-1.0.0 lib/vcr/extensions/net_http.rb