Sha256: bb6a8b963b799dc6c215a8fd9ccccf28eac64b54a80fbc34434327cd052a1201

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

require 'faraday'

module PuppetForge
  module Connection
    # Wrap Faraday connection failures to include the host and optional proxy
    # in use for the failed connection.
    class ConnectionFailure < Faraday::Middleware
      def call(env)
        @app.call(env)
      rescue Faraday::ConnectionFailed => e
        baseurl = env[:url].dup
        if proxy = env[:request][:proxy]
          errmsg = _("Unable to connect to %{scheme}://%{host} (using proxy %{proxy}) (for request %{path_query})") % {
            scheme: baseurl.scheme,
            host: baseurl.host,
            proxy: proxy.uri.to_s,
            path_query: baseurl.request_uri,
          }
        else
          errmsg = _("Unable to connect to %{scheme}://%{host} (for request %{path_query})") % {
            scheme: baseurl.scheme,
            host: baseurl.host,
            path_query: baseurl.request_uri,
          }
        end
        errmsg << ": #{e.message}"
        m = Faraday::ConnectionFailed.new(errmsg)
        m.set_backtrace(e.backtrace)
        raise m
      end
    end
  end
end

Faraday::Middleware.register_middleware(:connection_failure => lambda { PuppetForge::Connection::ConnectionFailure })

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
puppet_forge-2.3.1 lib/puppet_forge/connection/connection_failure.rb
puppet_forge-2.3.0 lib/puppet_forge/connection/connection_failure.rb
puppet_forge-2.3.0.rc1 lib/puppet_forge/connection/connection_failure.rb