/**
* ghapi
* A Java wrapper for the GitHub API
*
* Copyright (c) 2010 Idlesoft.
*
* Licensed under the New BSD License.
*/
package org.idlesoft.libraries.ghapi;
public class Issues extends APIAbstract {
public Issues(GitHubAPI a)
{
super(a);
}
/**
* Searches for issues for a repository
*
* @param owner
* @param repositoryName
* @param state
* @param query
* @return
*/
public Response search(String owner, String repositoryName, String state, String query)
{
return HTTPGet("https://github.com/api/v2/json/issues/search/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + encode(state) + "/" + encode(query));
}
/**
* Fetches a list of open or closed issues for a repository
*
* @param owner
* @param repositoryName
* @param state
* @return
*/
public Response list(String owner, String repositoryName, String state)
{
return HTTPGet("https://github.com/api/v2/json/issues/list/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + encode(state));
}
/**
* View an individual issue
*
* @param owner
* @param repositoryName
* @param number
* @return
*/
public Response issue(String owner, String repositoryName, int number)
{
return HTTPGet("https://github.com/api/v2/json/issues/show/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + encode("" + number + ""));
}
/**
* Fetches a list of comments for a specific issue
*
* @param owner
* @param repositoryName
* @param number
* @return
*/
public Response list_comments(String owner, String repositoryName, int number)
{
return HTTPGet("https://github.com/api/v2/json/issues/comments/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + encode("" + number + ""));
}
/**
* Opens a new issue with given title and body text
*
* @param owner
* @param repositoryName
* @param title
* @param body
* @return
*/
public Response open(String owner, String repositoryName, String title, String body)
{
return HTTPPost("https://github.com/api/v2/json/issues/open/"
+ encode(owner) + "/" + encode(repositoryName),
"title=" + encode(title) + "&body=" + encode(body));
}
/**
* Reopens an issue
*
* @param owner
* @param repositoryName
* @param number
* @return
*/
public Response reopen(String owner, String repositoryName, int number)
{
return HTTPPost("https://github.com/api/v2/json/issues/reopen/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + number, "");
}
/**
* Closes an issue
*
* @param owner
* @param repositoryName
* @param number
* @return
*/
public Response close(String owner, String repositoryName, int number)
{
return HTTPPost("https://github.com/api/v2/json/issues/close/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + number, "");
}
/**
* Edits an issue with given title and body text
*
* @param owner
* @param repositoryName
* @param title
* @param body
* @return
*/
public Response edit(String owner, String repositoryName, int number, String title, String body)
{
return HTTPPost("https://github.com/api/v2/json/issues/edit/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + number,
"title=" + encode(title) + "&body=" + encode(body));
}
/**
* Fetches a list of issue labels associated with a repository
*
* @param owner
* @param repositoryName
* @return
*/
public Response labels(String owner, String repositoryName)
{
return HTTPGet("https://github.com/api/v2/json/issues/labels/"
+ encode(owner) + "/" + encode(repositoryName));
}
/**
* Adds a label to an issue, creating it if it does not exist
*
* @param owner
* @param repositoryName
* @param label
* @param number
* @return
*/
public Response add_label(String owner, String repositoryName, String label, int number)
{
return HTTPGet("https://github.com/api/v2/json/issues/label/add/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + encode(label) + "/" + encode("" + number + ""));
}
/**
* Removes a label from an issue
*
* @param owner
* @param repositoryName
* @param label
* @param number
* @return
*/
public Response remove_label(String owner, String repositoryName, String label, int number)
{
return HTTPGet("https://github.com/api/v2/json/issues/label/remove/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + encode(label) + "/" + encode("" + number + ""));
}
/**
* Adds a comment to an issue
*
* @param owner
* @param repositoryName
* @param number
* @param body
* @return
*/
public Response add_comment(String owner, String repositoryName, int number, String body)
{
return HTTPPost("https://github.com/api/v2/json/issues/comment/"
+ encode(owner) + "/" + encode(repositoryName) + "/" + encode("" + number + ""),
"comment=" + encode(body));
}
}