data_importer/lib/github_api/security_advisory.rb
2022-04-19 02:37:27 -05:00

62 lines
1.6 KiB
Ruby

# frozen_string_literal: true
require '/data_importer/lib/github_api/github_api'
module GithubApi
class SecurityAdvisory
SecurityAdvisoryQuery = GithubApi::Client.parse <<-'GRAPHQL'
query($ghsa_id: String!) {
securityAdvisory(ghsaId: $ghsa_id) {
ghsaId
summary
severity
description
cvss {
vectorString
}
origin
permalink
notificationsPermalink
updatedAt
publishedAt
cwes(first: 100) {
edges {
node {
cweId
description
}
}
}
references {
url
}
vulnerabilities(first: 100) {
edges {
node {
package {
name
ecosystem
}
severity
updatedAt
vulnerableVersionRange
}
}
}
}
}
GRAPHQL
def self.find(ghsa_id)
# Retryable.retryable(tries: 3, on: QueryExecutionError, sleep: lambda { |n| 4**n } ) do
response = GithubApi::Client.query(SecurityAdvisoryQuery, variables: { ghsa_id: ghsa_id })
if response.errors.any?
raise QueryExecutionError, response.errors[:data].join(', ')
else
response.data.security_advisory
end
# end
end
end
end
class QueryExecutionError < StandardError; end