Current section
Files
Jump to
Current section
Files
lib/tentacat/pulls.ex
defmodule Tentacat.Pulls do
import Tentacat
alias Tentacat.Client
@doc """
List pull requests
## Example
Tentacat.Pulls.list "elixir-lang", "elixir"
Tentacat.Pulls.list client, "elixir-lang", "elixir"
More info at: https://developer.github.com/v3/pulls/#list-pull-requests
"""
@spec list(Client.t(), binary, binary) :: Tentacat.response()
def list(client \\ %Client{}, owner, repo) do
get("repos/#{owner}/#{repo}/pulls", client)
end
@doc """
Filter pull requests
## Example
Tentacat.Pulls.filter "elixir-lang", "elixir", %{state: "open"}
Tentacat.Pulls.filter client, "elixir-lang", "elixir", %{state: "open"}
More info at: https://developer.github.com/v3/pulls/#parameters
"""
@spec filter(Client.t(), binary, binary, map) :: Tentacat.response()
def filter(client \\ %Client{}, owner, repo, filters) do
get("repos/#{owner}/#{repo}/pulls?#{URI.encode_query(filters)}", client)
end
@doc """
Get a single pull request
## Example
Tentacat.Pulls.find "elixir-lang", "elixir", "2974"
Tentacat.Pulls.find client, "elixir-lang", "elixir", "2974"
More info at: https://developer.github.com/v3/pulls/#get-a-single-pull-request
"""
@spec find(Client.t(), binary, binary, binary | integer) :: Tentacat.response()
def find(client \\ %Client{}, owner, repo, number) do
get("repos/#{owner}/#{repo}/pulls/#{number}", client)
end
@doc """
Create a pull request
Pull Request body example:
%{
"title" => "Amazing new feature",
"body" => "Please pull this in!",
"head" => "octocat:new-feature",
"base" => "master"
}
Alternative input (using an existing issue):
%{
"issue" => "5",
"head" => "octocat:new-feature",
"base" => "master"
}
## Example
Tentacat.Pulls.create client, "elixir-lang", "elixir", body
More info at: https://developer.github.com/v3/pulls/#create-a-pull-request
"""
@spec create(Client.t(), binary, binary, list | map) :: Tentacat.response()
def create(client, owner, repo, body) do
post("repos/#{owner}/#{repo}/pulls", client, body)
end
@doc """
Update a pull request
Pull Request body example:
%{
"title" => "new title",
"body" => "updated body",
"state" => "open"
}
## Example
Tentacat.Pulls.update client, "elixir-lang", "elixir", "2974", body
More info at: https://developer.github.com/v3/pulls/#update-a-pull-request
"""
@spec update(Client.t(), binary, binary, binary | integer, list | map) :: Tentacat.response()
def update(client, owner, repo, number, body) do
patch("repos/#{owner}/#{repo}/pulls/#{number}", client, body)
end
@doc """
Merge a pull request (Merge Button)
Pull Request Merge body example:
%{
"commit_message" => "not the default commit_message",
"sha" => "8e50d79f2ba0d665b9966908cbf22c6f463228d6"
}
## Example
Tentacat.Pulls.merge client, "elixir-lang", "elixir", "4876", body
More info at: https://developer.github.com/v3/pulls/#merge-a-pull-request-merge-button
"""
@spec merge(Client.t(), binary, binary, binary | integer, list | map) :: Tentacat.response()
def merge(client, owner, repo, number, body) do
put("repos/#{owner}/#{repo}/pulls/#{number}/merge", client, body)
end
@doc """
Get if a pull request has been merged
## Example
Tentacat.Pulls.has_been_merged client, "elixir-lang", "elixir", "4876"
More info at: https://developer.github.com/v3/pulls/#get-if-a-pull-request-has-been-merged
"""
@spec has_been_merged(Client.t(), binary, binary, binary | integer) :: Tentacat.response()
def has_been_merged(client, owner, repo, number) do
get("repos/#{owner}/#{repo}/pulls/#{number}/merge", client)
end
end