summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-01-14 16:02:55 -0700
committermo khan <mo.khan@gmail.com>2020-01-15 15:03:09 -0700
commitad09f31e9a846687ff692c2809f14cecd9136354 (patch)
tree3f087273aeb63dfdb52a6c97240cd9e41dea688a
parent84e38fb1ee5feb5616a146f64f9d8f32ade5e594 (diff)
Centralize access to HTTP to turn on airgap mode easily
-rw-r--r--lib/license/management.rb9
-rw-r--r--lib/license/management/pypi.rb14
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