Skip to main content

lib/api/enterprise_team_memberships/enterprise_team_memberships.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.EnterpriseTeamMemberships do
  @moduledoc """
  GitHub `enterprise-team-memberships` API.
  """
  import Noizu.Github

  @doc """
  Add team member

  @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#add-team-member
  """
  def add(enterprise, enterprise_team, username, body, options \\ nil) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/teams/#{enterprise_team}/memberships/#{username}"

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

  @doc """
  Bulk add team members

  @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#bulk-add-team-members
  """
  def bulk_add(enterprise, enterprise_team, body, options \\ nil) do
    url = github_base() <> "/enterprises/#{enterprise}/teams/#{enterprise_team}/memberships/add"
    body = body
    api_call(:post, url, body, Noizu.Github.Collection.SimpleUser, options)
  end

  @doc """
  Bulk remove team members

  @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#bulk-remove-team-members
  """
  def bulk_remove(enterprise, enterprise_team, body, options \\ nil) do
    url =
      github_base() <> "/enterprises/#{enterprise}/teams/#{enterprise_team}/memberships/remove"

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

  @doc """
  Get enterprise team membership

  @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#get-enterprise-team-membership
  """
  def get(enterprise, enterprise_team, username, options \\ nil) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/teams/#{enterprise_team}/memberships/#{username}"

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

  @doc """
  List members in an enterprise team

  @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#list-members-in-an-enterprise-team
  """
  def list(enterprise, enterprise_team, options \\ nil) do
    url =
      (
        query =
          [
            get_field(:per_page, options, nil),
            get_field(:page, options, nil)
          ]
          |> Enum.filter(& &1)

        qs = if query == [], do: "", else: "?" <> Enum.join(query, "&")
        github_base() <> "/enterprises/#{enterprise}/teams/#{enterprise_team}/memberships" <> qs
      )

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

  @doc """
  Remove team membership

  @see https://docs.github.com/rest/enterprise-teams/enterprise-team-members#remove-team-membership
  """
  def remove(enterprise, enterprise_team, username, options \\ nil) do
    url =
      github_base() <>
        "/enterprises/#{enterprise}/teams/#{enterprise_team}/memberships/#{username}"

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