+++ /dev/null
-module Faraday
- class Request::Instrumentation < Faraday::Middleware
- class Options < Faraday::Options.new(:name, :instrumenter)
- def name
- self[:name] ||= 'request.faraday'
- end
-
- def instrumenter
- self[:instrumenter] ||= ActiveSupport::Notifications
- end
- end
-
- # Public: Instruments requests using Active Support.
- #
- # Measures time spent only for synchronous requests.
- #
- # Examples
- #
- # 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
- def initialize(app, options = nil)
- super(app)
- @name, @instrumenter = Options.from(options).values_at(:name, :instrumenter)
- end
-
- def call(env)
- @instrumenter.instrument(@name, env) do
- @app.call(env)
- end
- end
- end
-end