diff options
| author | mo khan <mo.khan@gmail.com> | 2020-01-13 15:46:56 -0700 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-01-15 15:03:07 -0700 |
| commit | 8ec78f9142577f9f6ed73d4dd5ac0a3e5f02a5c6 (patch) | |
| tree | cec98d92fe16bd0a7b7853e69bebeb2740aaad5e /lib | |
| parent | e98681be9b19d2a01efdbe14e7e8695b05b60010 (diff) | |
Use net/hippie to provider exponential backoff + jitter retries
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/license_finder/package_managers/pipenv.rb | 4 | ||||
| -rw-r--r-- | lib/license_finder/package_utils/pypi.rb | 29 |
2 files changed, 7 insertions, 26 deletions
diff --git a/lib/license_finder/package_managers/pipenv.rb b/lib/license_finder/package_managers/pipenv.rb index e35b85d..6af53bf 100644 --- a/lib/license_finder/package_managers/pipenv.rb +++ b/lib/license_finder/package_managers/pipenv.rb @@ -50,11 +50,11 @@ module LicenseFinder end def allowed_groups - %w[default develop] - ignored_groups.to_a + %w[default develop] - ignored_groups end def ignored_groups - @ignored_groups || [] + @ignored_groups.to_a || [] end end end diff --git a/lib/license_finder/package_utils/pypi.rb b/lib/license_finder/package_utils/pypi.rb index fac02ec..30856bd 100644 --- a/lib/license_finder/package_utils/pypi.rb +++ b/lib/license_finder/package_utils/pypi.rb @@ -1,39 +1,20 @@ # frozen_string_literal: true -require 'net/http' -require 'openssl' +require 'net/hippie' module LicenseFinder class PyPI - CONNECTION_ERRORS = [ - EOFError, - Errno::ECONNREFUSED, - Errno::ECONNRESET, - Errno::ECONNRESET, - Errno::EHOSTUNREACH, - Errno::EINVAL, - Net::OpenTimeout, - Net::ProtocolError, - Net::ReadTimeout, - OpenSSL::OpenSSLError, - OpenSSL::SSL::SSLError, - SocketError, - Timeout::Error - ].freeze - class << self def definition(name, version) response = request("https://pypi.org/pypi/#{name}/#{version}/json") response.is_a?(Net::HTTPSuccess) ? JSON.parse(response.body).fetch('info', {}) : {} - rescue *CONNECTION_ERRORS + rescue *Net::Hippie::CONNECTION_ERRORS {} end - def request(location, limit = 10) - uri = URI(location) - http = Net::HTTP.new(uri.host, uri.port) - http.use_ssl = true - response = http.get(uri.request_uri).response + def request(url, limit = 10) + client = Net::Hippie::Client.new + response = client.with_retry { client.get(url) } response.is_a?(Net::HTTPRedirection) && limit.positive? ? request(response['location'], limit - 1) : response end end |
