Sha256: 18bd2cd9e195086d1d65774ad19eee0005f7363ff0051135638e1e4e353563bd

Contents?: true

Size: 1.72 KB

Versions: 87

Compression:

Stored size: 1.72 KB

Contents

# frozen_string_literal: true

module Faraday
  class Request
    # Middleware for instrumenting Requests.
    class Instrumentation < Faraday::Middleware
      # Options class used in Request::Instrumentation class.
      class Options < Faraday::Options.new(:name, :instrumenter)
        # @return [String]
        def name
          self[:name] ||= 'request.faraday'
        end

        # @return [Class]
        def instrumenter
          self[:instrumenter] ||= ActiveSupport::Notifications
        end
      end

      # Instruments requests using Active Support.
      #
      # Measures time spent only for synchronous requests.
      #
      # @example Using ActiveSupport::Notifications to measure time spent
      #   for Faraday requests.
      #   ActiveSupport::Notifications
      #     .subscribe('request.faraday') do |name, starts, ends, _, env|
      #     url = env[:url]
      #     http_method = env[:method].to_s.upcase
      #     duration = ends - starts
      #     $stderr.puts '[%s] %s %s (%.3f s)' %
      #       [url.host, http_method, url.request_uri, duration]
      #   end
      # @param app [#call]
      # @param options [nil, Hash] Options hash
      # @option options [String] :name ('request.faraday')
      #   Name of the instrumenter
      # @option options [Class] :instrumenter (ActiveSupport::Notifications)
      #   Active Support instrumenter class.
      def initialize(app, options = nil)
        super(app)
        @name, @instrumenter = Options.from(options)
                                      .values_at(:name, :instrumenter)
      end

      # @param env [Faraday::Env]
      def call(env)
        @instrumenter.instrument(@name, env) do
          @app.call(env)
        end
      end
    end
  end
end

Version data entries

87 entries across 74 versions & 16 rubygems

Version Path
avalara_sdk-24.12.2 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.4/lib/faraday/request/instrumentation.rb
avalara_sdk-24.12.1 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.4/lib/faraday/request/instrumentation.rb
avalara_sdk-24.12.0 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.4/lib/faraday/request/instrumentation.rb
minato_ruby_api_client-0.2.2 vendor/bundle/ruby/3.2.0/gems/faraday-1.10.3/lib/faraday/request/instrumentation.rb
faraday-1.10.4 lib/faraday/request/instrumentation.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/faraday-1.2.0/lib/faraday/request/instrumentation.rb
avalara_sdk-24.2.29 vendor/bundle/ruby/2.7.0/gems/faraday-1.10.3/lib/faraday/request/instrumentation.rb
faraday-1.10.3 lib/faraday/request/instrumentation.rb
faraday-1.10.2 lib/faraday/request/instrumentation.rb
faraday-1.10.1 lib/faraday/request/instrumentation.rb
alloy_sdk-0.1.0 vendor/bundle/ruby/3.0.0/gems/faraday-1.0.1/lib/faraday/request/instrumentation.rb
op_connect-0.1.2 vendor/bundle/ruby/3.1.0/gems/faraday-1.10.0/lib/faraday/request/instrumentation.rb
plaid-14.13.0 vendor/bundle/ruby/3.0.0/gems/faraday-1.10.0/lib/faraday/request/instrumentation.rb
tdiary-5.2.1 vendor/bundle/ruby/3.1.0/gems/faraday-1.10.0/lib/faraday/request/instrumentation.rb
faraday-1.10.0 lib/faraday/request/instrumentation.rb
plaid-14.12.1 vendor/bundle/ruby/3.0.0/gems/faraday-1.9.3/lib/faraday/request/instrumentation.rb
plaid-14.12.0 vendor/bundle/ruby/2.6.0/gems/faraday-1.9.3/lib/faraday/request/instrumentation.rb
plaid-14.12.0 vendor/bundle/ruby/2.6.0/gems/faraday-1.8.0/lib/faraday/request/instrumentation.rb
plaid-14.11.1 vendor/bundle/ruby/2.6.0/gems/faraday-1.9.3/lib/faraday/request/instrumentation.rb
faraday-1.9.3 lib/faraday/request/instrumentation.rb