diff options
| author | mo khan <mo.khan@gmail.com> | 2020-01-14 16:02:55 -0700 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-01-15 15:03:09 -0700 |
| commit | ad09f31e9a846687ff692c2809f14cecd9136354 (patch) | |
| tree | 3f087273aeb63dfdb52a6c97240cd9e41dea688a /lib | |
| parent | 84e38fb1ee5feb5616a146f64f9d8f32ade5e594 (diff) | |
Centralize access to HTTP to turn on airgap mode easily
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/license/management.rb | 9 | ||||
| -rw-r--r-- | lib/license/management/pypi.rb | 14 |
2 files changed, 12 insertions, 11 deletions
diff --git a/lib/license/management.rb b/lib/license/management.rb index a6986e7..85ef4cc 100644 --- a/lib/license/management.rb +++ b/lib/license/management.rb @@ -14,6 +14,8 @@ require 'license/management/pypi' # This applies a monkey patch to the JsonReport found in the `license_finder` gem. LicenseFinder::JsonReport.prepend(License::Management::Report) + +# This monkey patch can be removed once https://github.com/pivotal/LicenseFinder/pull/659 is released LicenseFinder::Scanner.const_set( :PACKAGE_MANAGERS, LicenseFinder::Scanner::PACKAGE_MANAGERS + [License::Management::Pipenv] @@ -38,5 +40,12 @@ module License def self.root Pathname.new(File.dirname(__FILE__)).join('../..') end + + def self.http + @http ||= Net::Hippie::Client.new.tap do |client| + client.logger = ::Logger.new('http.log') + client.follow_redirects = 3 + end + end end end diff --git a/lib/license/management/pypi.rb b/lib/license/management/pypi.rb index c0254e6..0397532 100644 --- a/lib/license/management/pypi.rb +++ b/lib/license/management/pypi.rb @@ -6,15 +6,14 @@ module License module Management class PyPI include Loggable - attr_reader :http - def initialize(http = default_http) + def initialize(http) @http = http end def definition_for(name, version) uri = "https://pypi.org/pypi/#{name}/#{version}/json" - process(http.get(uri)).tap do |definition| + process(@http.with_retry { |client| client.get(uri) }).tap do |definition| log_info([name, version, definition["license"]].inspect) end rescue *Net::Hippie::CONNECTION_ERRORS @@ -23,7 +22,7 @@ module License class << self def definition(name, version) - @pypi ||= new + @pypi ||= new(License::Management.http) @pypi.definition_for(name, version) end end @@ -37,13 +36,6 @@ module License {} end - def default_http - @default_http ||= Net::Hippie::Client.new.tap do |client| - client.logger = ::Logger.new('http.log') - client.follow_redirects = 3 - end - end - def ok?(response) response.is_a?(Net::HTTPSuccess) end |
