Skip to main content

lib/api/code_security/code_security.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.CodeSecurity do
  @moduledoc """
  GitHub `code-security` API.
  """
  import Noizu.Github

  @doc """
  Attach a configuration to repositories

  @see https://docs.github.com/rest/code-security/configurations#attach-a-configuration-to-repositories
  """
  def attach_configuration(org, configuration_id, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/code-security/configurations/#{configuration_id}/attach"
    body = body
    api_call(:post, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Attach an enterprise configuration to repositories

  @see https://docs.github.com/rest/code-security/configurations#attach-an-enterprise-configuration-to-repositories
  """
  def attach_enterprise_configuration(enterprise, configuration_id, body, options \\ nil) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/code-security/configurations/#{configuration_id}/attach"

    body = body
    api_call(:post, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Create a code security configuration

  @see https://docs.github.com/rest/code-security/configurations#create-a-code-security-configuration
  """
  def create_configuration(org, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/code-security/configurations"
    body = body
    api_call(:post, url, body, Noizu.Github.CodeSecurityConfiguration, options)
  end

  @doc """
  Create a code security configuration for an enterprise

  @see https://docs.github.com/rest/code-security/configurations#create-a-code-security-configuration-for-an-enterprise
  """
  def create_configuration_for_enterprise(enterprise, body, options \\ nil) do
    url = github_base() <> "/enterprises/#{enterprise}/code-security/configurations"
    body = body
    api_call(:post, url, body, Noizu.Github.CodeSecurityConfiguration, options)
  end

  @doc """
  Delete a code security configuration

  @see https://docs.github.com/rest/code-security/configurations#delete-a-code-security-configuration
  """
  def delete_configuration(org, configuration_id, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/code-security/configurations/#{configuration_id}"
    body = %{}
    api_call(:delete, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Delete a code security configuration for an enterprise

  @see https://docs.github.com/rest/code-security/configurations#delete-a-code-security-configuration-for-an-enterprise
  """
  def delete_configuration_for_enterprise(enterprise, configuration_id, options \\ nil) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/code-security/configurations/#{configuration_id}"

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

  @doc """
  Detach configurations from repositories

  @see https://docs.github.com/rest/code-security/configurations#detach-configurations-from-repositories
  """
  def detach_configuration(org, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/code-security/configurations/detach"
    body = body
    api_call(:delete, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Get a code security configuration

  @see https://docs.github.com/rest/code-security/configurations#get-a-code-security-configuration
  """
  def get_configuration(org, configuration_id, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/code-security/configurations/#{configuration_id}"
    body = %{}
    api_call(:get, url, body, Noizu.Github.CodeSecurityConfiguration, options)
  end

  @doc """
  Get the code security configuration associated with a repository

  @see https://docs.github.com/rest/code-security/configurations#get-the-code-security-configuration-associated-with-a-repository
  """
  def get_configuration_for_repository(options \\ nil) do
    owner = repo_owner(options)
    repo = repo_name(options)
    url = github_base() <> "/repos/#{owner}/#{repo}/code-security-configuration"
    body = %{}
    api_call(:get, url, body, Noizu.Github.CodeSecurityConfigurationForRepository, options)
  end

  @doc """
  Get code security configurations for an enterprise

  @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-enterprise
  """
  def get_configurations_for_enterprise(enterprise, options \\ nil) do
    url =
      (
        query =
          [
            get_field(:per_page, options, nil),
            get_field(:before, options, nil),
            get_field(:after, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
        github_base() <> "/enterprises/#{enterprise}/code-security/configurations" <> qs
      )

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

  @doc """
  Get code security configurations for an organization

  @see https://docs.github.com/rest/code-security/configurations#get-code-security-configurations-for-an-organization
  """
  def get_configurations_for_org(org, options \\ nil) do
    url =
      (
        query =
          [
            get_field(:target_type, options, nil),
            get_field(:per_page, options, nil),
            get_field(:before, options, nil),
            get_field(:after, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
        github_base() <> "/orgs/#{org}/code-security/configurations" <> qs
      )

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

  @doc """
  Get default code security configurations

  @see https://docs.github.com/rest/code-security/configurations#get-default-code-security-configurations
  """
  def get_default_configurations(org, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/code-security/configurations/defaults"
    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Get default code security configurations for an enterprise

  @see https://docs.github.com/rest/code-security/configurations#get-default-code-security-configurations-for-an-enterprise
  """
  def get_default_configurations_for_enterprise(enterprise, options \\ nil) do
    url = github_base() <> "/enterprises/#{enterprise}/code-security/configurations/defaults"
    body = %{}
    api_call(:get, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Get repositories associated with a code security configuration

  @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-a-code-security-configuration
  """
  def get_repositories_for_configuration(org, configuration_id, options \\ nil) do
    url =
      (
        query =
          [
            get_field(:per_page, options, nil),
            get_field(:before, options, nil),
            get_field(:after, options, nil),
            get_field(:status, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")

        github_base() <>
          "/orgs/#{org}/code-security/configurations/#{configuration_id}/repositories" <> qs
      )

    body = %{}

    api_call(
      :get,
      url,
      body,
      Noizu.Github.Collection.CodeSecurityConfigurationRepositories,
      options
    )
  end

  @doc """
  Get repositories associated with an enterprise code security configuration

  @see https://docs.github.com/rest/code-security/configurations#get-repositories-associated-with-an-enterprise-code-security-configuration
  """
  def get_repositories_for_enterprise_configuration(enterprise, configuration_id, options \\ nil) do
    url =
      (
        query =
          [
            get_field(:per_page, options, nil),
            get_field(:before, options, nil),
            get_field(:after, options, nil),
            get_field(:status, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")

        github_base() <>
          "/enterprises/#{enterprise}/code-security/configurations/#{configuration_id}/repositories" <>
          qs
      )

    body = %{}

    api_call(
      :get,
      url,
      body,
      Noizu.Github.Collection.CodeSecurityConfigurationRepositories,
      options
    )
  end

  @doc """
  Retrieve a code security configuration of an enterprise

  @see https://docs.github.com/rest/code-security/configurations#retrieve-a-code-security-configuration-of-an-enterprise
  """
  def get_single_configuration_for_enterprise(enterprise, configuration_id, options \\ nil) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/code-security/configurations/#{configuration_id}"

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

  @doc """
  Set a code security configuration as a default for an organization

  @see https://docs.github.com/rest/code-security/configurations#set-a-code-security-configuration-as-a-default-for-an-organization
  """
  def set_configuration_as_default(org, configuration_id, body, options \\ nil) do
    url =
      github_base() <> "/orgs/#{org}/code-security/configurations/#{configuration_id}/defaults"

    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Set a code security configuration as a default for an enterprise

  @see https://docs.github.com/rest/code-security/configurations#set-a-code-security-configuration-as-a-default-for-an-enterprise
  """
  def set_configuration_as_default_for_enterprise(
        enterprise,
        configuration_id,
        body,
        options \\ nil
      ) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/code-security/configurations/#{configuration_id}/defaults"

    body = body
    api_call(:put, url, body, Noizu.Github.Raw, options)
  end

  @doc """
  Update a code security configuration

  @see https://docs.github.com/rest/code-security/configurations#update-a-code-security-configuration
  """
  def update_configuration(org, configuration_id, body, options \\ nil) do
    url = github_base() <> "/orgs/#{org}/code-security/configurations/#{configuration_id}"
    body = body
    api_call(:patch, url, body, Noizu.Github.CodeSecurityConfiguration, options)
  end

  @doc """
  Update a custom code security configuration for an enterprise

  @see https://docs.github.com/rest/code-security/configurations#update-a-custom-code-security-configuration-for-an-enterprise
  """
  def update_enterprise_configuration(enterprise, configuration_id, body, options \\ nil) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/code-security/configurations/#{configuration_id}"

    body = body
    api_call(:patch, url, body, Noizu.Github.CodeSecurityConfiguration, options)
  end
end