Sha256: 04fe3313386d7e2bd31736cee386c192c18c32d5f55a4a17e4a7830f3cdd45b2
Contents?: true
Size: 1.05 KB
Versions: 28
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true require 'net/http' require 'openssl' 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 {} 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 response.is_a?(Net::HTTPRedirection) && limit.positive? ? request(response['location'], limit - 1) : response end end end end
Version data entries
28 entries across 28 versions & 2 rubygems