]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/aviator/feature/faraday/request/instrumentation.rb
add aimonb/aviator to 3rdparty
[dsa-puppet.git] / 3rdparty / modules / aviator / feature / faraday / request / instrumentation.rb
1 module Faraday
2   class Request::Instrumentation < Faraday::Middleware
3     class Options < Faraday::Options.new(:name, :instrumenter)
4       def name
5         self[:name] ||= 'request.faraday'
6       end
7
8       def instrumenter
9         self[:instrumenter] ||= ActiveSupport::Notifications
10       end
11     end
12
13     # Public: Instruments requests using Active Support.
14     #
15     # Measures time spent only for synchronous requests.
16     #
17     # Examples
18     #
19     #   ActiveSupport::Notifications.subscribe('request.faraday') do |name, starts, ends, _, env|
20     #     url = env[:url]
21     #     http_method = env[:method].to_s.upcase
22     #     duration = ends - starts
23     #     $stderr.puts '[%s] %s %s (%.3f s)' % [url.host, http_method, url.request_uri, duration]
24     #   end
25     def initialize(app, options = nil)
26       super(app)
27       @name, @instrumenter = Options.from(options).values_at(:name, :instrumenter)
28     end
29
30     def call(env)
31       @instrumenter.instrument(@name, env) do
32         @app.call(env)
33       end
34     end
35   end
36 end