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 | |
| parent | e98681be9b19d2a01efdbe14e7e8695b05b60010 (diff) | |
Use net/hippie to provider exponential backoff + jitter retries
| -rw-r--r-- | Gemfile.lock | 2 | ||||
| -rw-r--r-- | lib/license_finder/package_managers/pipenv.rb | 4 | ||||
| -rw-r--r-- | lib/license_finder/package_utils/pypi.rb | 29 | ||||
| -rw-r--r-- | license-management.gemspec | 3 |
4 files changed, 11 insertions, 27 deletions
diff --git a/Gemfile.lock b/Gemfile.lock index 4978f8d..0a91a04 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,6 +3,7 @@ PATH specs: license-management (2.3.1) license_finder (~> 5.11) + net-hippie (~> 0.2) GEM remote: https://rubygems.org/ @@ -15,6 +16,7 @@ GEM toml (= 0.2.0) with_env (= 1.1.0) xml-simple + net-hippie (0.2.7) parslet (1.8.2) rspec (3.9.0) rspec-core (~> 3.9.0) 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 diff --git a/license-management.gemspec b/license-management.gemspec index c58bbdc..46278f0 100644 --- a/license-management.gemspec +++ b/license-management.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |spec| spec.summary = 'License Management job for GitLab CI.' spec.description = 'License Management job for GitLab CI.' spec.homepage = 'https://gitlab.com/gitlab-org/security-products/license-management' - spec.license = 'GitLab EE' + spec.license = 'Nonstandard' spec.metadata['allowed_push_host'] = 'https://example.com' spec.metadata['homepage_uri'] = spec.homepage @@ -28,5 +28,6 @@ Gem::Specification.new do |spec| spec.require_paths = ['lib'] spec.add_dependency 'license_finder', '~> 5.11' + spec.add_dependency 'net-hippie', '~> 0.2' spec.add_development_dependency 'rspec', '~> 3.9' end |
