class GithubGraphApi

Understands github graph api

Constants

ENDPOINT

Public Class Methods

new(oauth_token) click to toggle source
# File lib/github_graph_api.rb, line 8
def initialize(oauth_token)
  raise "You must provide an oauth token" unless oauth_token

  @oauth_token = oauth_token
end

Public Instance Methods

fetch_vulnerabilities(project:, owner:) click to toggle source
# File lib/github_graph_api.rb, line 14
def fetch_vulnerabilities(project:, owner:)
  uri = URI(ENDPOINT)
  https = Net::HTTP.new(uri.host, uri.port)
  # https.set_debug_output($stdout)
  https.use_ssl = true
  req = Net::HTTP::Post.new(uri.path, { "Authorization" => "bearer #{@oauth_token}" })
  req.body = JSON[{ "query" => request_json(project: project, owner: owner) }]
  res = https.request(req)
  res.body
end

Private Instance Methods

request_json(project:, owner:) click to toggle source
# File lib/github_graph_api.rb, line 27
  def request_json(project:, owner:)
    <<-HERE
      query{
        repository(name: "#{project}", owner: "#{owner}") {
          vulnerabilityAlerts(first: 100) {
            nodes {
              createdAt
              dismissedAt
              securityVulnerability {
                package {
                  name
                }
                advisory {
                  description
                }
              }
            }
          }
        }
      }
    HERE
  end