# 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.Campaigns do @moduledoc """ GitHub `campaigns` API. """ import Noizu.Github @doc """ Create a campaign for an organization @see https://docs.github.com/rest/campaigns/campaigns#create-a-campaign-for-an-organization """ def create_campaign(org, body, options \\ nil) do url = github_base() <> "/orgs/#{org}/campaigns" body = body api_call(:post, url, body, Noizu.Github.CampaignSummary, options) end @doc """ Delete a campaign for an organization @see https://docs.github.com/rest/campaigns/campaigns#delete-a-campaign-for-an-organization """ def delete_campaign(org, campaign_number, options \\ nil) do url = github_base() <> "/orgs/#{org}/campaigns/#{campaign_number}" body = %{} api_call(:delete, url, body, Noizu.Github.Raw, options) end @doc """ Get a campaign for an organization @see https://docs.github.com/rest/campaigns/campaigns#get-a-campaign-for-an-organization """ def get_campaign_summary(org, campaign_number, options \\ nil) do url = github_base() <> "/orgs/#{org}/campaigns/#{campaign_number}" body = %{} api_call(:get, url, body, Noizu.Github.CampaignSummary, options) end @doc """ List campaigns for an organization @see https://docs.github.com/rest/campaigns/campaigns#list-campaigns-for-an-organization """ def list_org_campaigns(org, options \\ nil) do url = ( query = [ get_field(:page, options, nil), get_field(:per_page, options, nil), get_field(:direction, options, nil), get_field(:state, options, nil), get_field(:sort, options, nil) ] |> Enum.filter(& &1) qs = if query == [], do: "", else: "?" <> Enum.join(query, "&") github_base() <> "/orgs/#{org}/campaigns" <> qs ) body = %{} api_call(:get, url, body, Noizu.Github.Collection.CampaignSummary, options) end @doc """ Update a campaign @see https://docs.github.com/rest/campaigns/campaigns#update-a-campaign """ def update_campaign(org, campaign_number, body, options \\ nil) do url = github_base() <> "/orgs/#{org}/campaigns/#{campaign_number}" body = body api_call(:patch, url, body, Noizu.Github.CampaignSummary, options) end end