@@ -15,8 +15,8 @@ class GitHubAdvisorySync
15
15
# The min_year argument specifies the earliest year CVE to sync.
16
16
# It is more important to sync the newer ones, so this allows the user to
17
17
# control how old of CVEs the sync should pull over
18
- def self . sync ( min_year : 2015 )
19
- gh_advisories = GraphQLAPIClient . new . all_rubygem_advisories
18
+ def self . sync ( min_year : 2015 , gem_name : nil )
19
+ gh_advisories = GraphQLAPIClient . new . all_rubygem_advisories ( gem_name : gem_name )
20
20
21
21
# Filter out advisories with a CVE year that is before the min_year
22
22
gh_advisories . select! { |v | v . cve_after_year? ( min_year ) }
@@ -89,10 +89,10 @@ def github_graphql_query(graphql_query_name, graphql_variables = {})
89
89
body_obj
90
90
end
91
91
92
- def all_rubygem_advisories
92
+ def all_rubygem_advisories ( gem_name : nil )
93
93
advisories = { }
94
94
95
- retrieve_all_rubygem_vulnerabilities . each do |vulnerability |
95
+ retrieve_all_rubygem_vulnerabilities ( gem_name : gem_name ) . each do |vulnerability |
96
96
advisory = GitHubAdvisory . new ( vulnerability [ "advisory" ] )
97
97
98
98
next if advisory . withdrawn?
@@ -105,9 +105,9 @@ def all_rubygem_advisories
105
105
advisories . values
106
106
end
107
107
108
- def retrieve_all_rubygem_vulnerabilities ( max_pages = 1000 , page_size = 100 )
108
+ def retrieve_all_rubygem_vulnerabilities ( max_pages = 1000 , page_size = 100 , gem_name : nil )
109
109
all_vulnerabilities = [ ]
110
- variables = { "first" => page_size }
110
+ variables = { "first" => page_size , "gem_name" => gem_name }
111
111
max_pages . times do |page_num |
112
112
puts "Getting page #{ page_num + 1 } of GitHub Vulnerabilities"
113
113
@@ -126,8 +126,8 @@ def retrieve_all_rubygem_vulnerabilities(max_pages = 1000, page_size = 100)
126
126
127
127
module GraphQLQueries
128
128
RUBYGEM_VULNERABILITIES_WITH_GITHUB_ADVISORIES = <<-GRAPHQL . freeze
129
- query($first: Int, $after: String) {
130
- securityVulnerabilities(first: $first, after: $after, ecosystem:RUBYGEMS) {
129
+ query($first: Int, $after: String, $gem_name: String ) {
130
+ securityVulnerabilities(first: $first, after: $after, ecosystem:RUBYGEMS, package: $gem_name ) {
131
131
pageInfo {
132
132
endCursor
133
133
hasNextPage
0 commit comments