Sha256: bb825de0c77ac36fc7557c8b273b5a8391f920d0bc407103dc5f0dfa425b8c78
Contents?: true
Size: 1.42 KB
Versions: 2
Compression:
Stored size: 1.42 KB
Contents
# frozen_string_literal: true module Spandx module Gateways # https://api.nuget.org/v3-flatcontainer/#{name}/#{version}/#{name}.nuspec # https://api.nuget.org/v3-flatcontainer/#{package.name}/index.json # https://docs.microsoft.com/en-us/nuget/api/package-base-address-resource class Nuget def initialize(http: Spandx.http) @http = http end def licenses_for(name, version) document = nuspec_for(name, version) exact_licenses_from(document) || guess_licenses_from(document) end private attr_reader :http def nuspec_url_for(name, version) "https://api.nuget.org/v3-flatcontainer/#{name}/#{version}/#{name}.nuspec" end def nuspec_for(name, version) from_xml(http.get(nuspec_url_for(name, version)).body) end def guess_license_in(content) Licensee::ProjectFiles::LicenseFile.new(content).license.key.upcase end def from_xml(xml) Nokogiri::XML(xml).tap(&:remove_namespaces!) end def exact_licenses_from(document) if (licenses = document.search('//package/metadata/license')).any? return licenses.map(&:text) end nil end def guess_licenses_from(document) document .search('//package/metadata/licenseUrl') .map { |node| guess_license_in(Spandx.http.get(node.text).body) } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
spandx-0.1.5 | lib/spandx/gateways/nuget.rb |
spandx-0.1.4 | lib/spandx/gateways/nuget.rb |