Sha256: fa78af8b5a7463725616f08f6f640c06fd10ed06c41b9d630e0a67a7ae606f73

Contents?: true

Size: 1.28 KB

Versions: 5

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module DevSuite
  module RequestLogger
    module Adapter
      require_relative "middleware/faraday"

      class Faraday < Base
        def enable
          return unless faraday_defined?

          ::Faraday::Connection.class_eval do
            alias_method(:_original_run_request, :run_request)

            def run_request(method, url, body, headers, &block)
              env = ::Faraday::Env.new(method, url, body, headers)
              env.request = @request
              env.params = @params
              env.request_body = @request_body
              env.ssl = @ssl
              env.response = @response

              Middleware::Faraday.new(lambda do |e|
                _original_run_request(e.method, e.url, e.body, e.request_headers, &block)
              end).call(env, self)
            end
          end
        end

        def disable
          return unless faraday_defined?

          ::Faraday::Connection.class_eval do
            alias_method(:run_request, :_original_run_request)
            remove_method(:_original_run_request)
          end
        end

        private

        # Check if Faraday is defined
        def faraday_defined?
          defined?(::Faraday::Connection) && defined?(::Faraday::Env)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dev_suite-0.2.13 lib/dev_suite/request_logger/adapter/faraday.rb
dev_suite-0.2.12 lib/dev_suite/request_logger/adapter/faraday.rb
dev_suite-0.2.11 lib/dev_suite/request_logger/adapter/faraday.rb
dev_suite-0.2.10 lib/dev_suite/request_logger/adapter/faraday.rb
dev_suite-0.2.9 lib/dev_suite/request_logger/adapter/faraday.rb