Skip to main content

lib/api/dependency_graph/dependency_graph.ex

# Generated by `mix github.gen` from docs/github-api/api.github.com.json.
# Do not edit by hand; re-run the task instead.

defmodule Noizu.Github.Api.DependencyGraph do
  @moduledoc """
  GitHub `dependency-graph` API.
  """
  import Noizu.Github

  @doc """
  Create a snapshot of dependencies for a repository

  @see https://docs.github.com/rest/dependency-graph/dependency-submission#create-a-snapshot-of-dependencies-for-a-repository
  """
  def create_repository_snapshot(body, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependency-graph/snapshots"
    body = body
    api_call(:post, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Get a diff of the dependencies between commits

  @see https://docs.github.com/rest/dependency-graph/dependency-review#get-a-diff-of-the-dependencies-between-commits
  """
  def diff_range(basehead, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)

    url =
      (
        query =
          [
            get_field(:name, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
        github_base() <> "/repos/#{owner}/#{repo}/dependency-graph/compare/#{basehead}" <> qs
      )

    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Export a software bill of materials (SBOM) for a repository.

  @see https://docs.github.com/rest/dependency-graph/sboms#export-a-software-bill-of-materials-sbom-for-a-repository
  """
  def export_sbom(options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependency-graph/sbom"
    body = %{}
    api_call(:get, url, body, Noizu.Github.DependencyGraphSpdxSbom, options)
  end

  @doc """
  Fetch a software bill of materials (SBOM) for a repository.

  @see https://docs.github.com/rest/dependency-graph/sboms#fetch-a-software-bill-of-materials-sbom-for-a-repository
  """
  def fetch_sbom_report(sbom_uuid, options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)

    url =
      github_base() <> "/repos/#{owner}/#{repo}/dependency-graph/sbom/fetch-report/#{sbom_uuid}"

    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Request generation of a software bill of materials (SBOM) for a repository.

  @see https://docs.github.com/rest/dependency-graph/sboms#request-generation-of-a-software-bill-of-materials-sbom-for-a-repository
  """
  def generate_sbom_report(options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/dependency-graph/sbom/generate-report"
    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end
end