diff options
| author | mo khan <mo.khan@gmail.com> | 2020-12-25 14:53:56 -0700 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-12-25 14:53:56 -0700 |
| commit | 6a03a01afea22bb46ed9da3c1b7889378e9dd13d (patch) | |
| tree | d34544003e1ad4657ab8bd7710253e727c66dfb6 /lib | |
| parent | a18f47bae6e509ec75d8bcdff5157d80d928ece0 (diff) | |
feat: parse rubygems index
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/spandx/ruby/gateway.rb | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/spandx/ruby/gateway.rb b/lib/spandx/ruby/gateway.rb index 208eb9e..fd506f4 100644 --- a/lib/spandx/ruby/gateway.rb +++ b/lib/spandx/ruby/gateway.rb @@ -8,6 +8,15 @@ module Spandx @http = http end + def each + response = http.get('https://index.rubygems.org/versions') + return unless http.ok?(response) + + parse_each_from(StringIO.new(response.body)) do |item| + yield item + end + end + def licenses_for(dependency) details_on(dependency.name, dependency.version)['licenses'] || [] end @@ -20,6 +29,17 @@ module Spandx attr_reader :http + def parse_each_from(io) + _created_at = io.readline + _triple_dash = io.readline + until io.eof? + name, versions, digest = io.readline.split(' ') + versions.split(',').each do |version| + yield({ name: name, version: version }) + end + end + end + def details_on(name, version) url = "https://rubygems.org/api/v2/rubygems/#{name}/versions/#{version}.json" response = http.get(url, default: {}) |
