mirror of
https://github.com/jlengrand/github-api.git
synced 2026-03-25 15:50:34 +00:00
Turns out I do care about formatting a little. We have a lot of builders and chained methods. I think it is easier to follow long chains when lined up veritcally.
132 lines
3.0 KiB
Java
132 lines
3.0 KiB
Java
package org.kohsuke.github;
|
|
|
|
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
|
|
/**
|
|
* Provides information on a Git ref from GitHub.
|
|
*
|
|
* @author Michael Clarke
|
|
*/
|
|
public class GHRef {
|
|
/* package almost final */ GitHub root;
|
|
|
|
private String ref, url;
|
|
private GHObject object;
|
|
|
|
/**
|
|
* Name of the ref, such as "refs/tags/abc"
|
|
*
|
|
* @return the ref
|
|
*/
|
|
public String getRef() {
|
|
return ref;
|
|
}
|
|
|
|
/**
|
|
* The API URL of this tag, such as https://api.github.com/repos/jenkinsci/jenkins/git/refs/tags/1.312
|
|
*
|
|
* @return the url
|
|
*/
|
|
public URL getUrl() {
|
|
return GitHub.parseURL(url);
|
|
}
|
|
|
|
/**
|
|
* The object that this ref points to.
|
|
*
|
|
* @return the object
|
|
*/
|
|
public GHObject getObject() {
|
|
return object;
|
|
}
|
|
|
|
/**
|
|
* Updates this ref to the specified commit.
|
|
*
|
|
* @param sha
|
|
* The SHA1 value to set this reference to
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void updateTo(String sha) throws IOException {
|
|
updateTo(sha, false);
|
|
}
|
|
|
|
/**
|
|
* Updates this ref to the specified commit.
|
|
*
|
|
* @param sha
|
|
* The SHA1 value to set this reference to
|
|
* @param force
|
|
* Whether or not to force this ref update.
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void updateTo(String sha, Boolean force) throws IOException {
|
|
new Requester(root).with("sha", sha).with("force", force).method("PATCH").to(url, GHRef.class).wrap(root);
|
|
}
|
|
|
|
/**
|
|
* Deletes this ref from the repository using the GitHub API.
|
|
*
|
|
* @throws IOException
|
|
* the io exception
|
|
*/
|
|
public void delete() throws IOException {
|
|
new Requester(root).method("DELETE").to(url);
|
|
}
|
|
|
|
GHRef wrap(GitHub root) {
|
|
this.root = root;
|
|
return this;
|
|
}
|
|
|
|
static GHRef[] wrap(GHRef[] in, GitHub root) {
|
|
for (GHRef r : in) {
|
|
r.wrap(root);
|
|
}
|
|
return in;
|
|
}
|
|
|
|
/**
|
|
* The type GHObject.
|
|
*/
|
|
@SuppressFBWarnings(
|
|
value = { "UWF_UNWRITTEN_PUBLIC_OR_PROTECTED_FIELD", "UWF_UNWRITTEN_FIELD", "NP_UNWRITTEN_FIELD" },
|
|
justification = "JSON API")
|
|
public static class GHObject {
|
|
private String type, sha, url;
|
|
|
|
/**
|
|
* Type of the object, such as "commit"
|
|
*
|
|
* @return the type
|
|
*/
|
|
public String getType() {
|
|
return type;
|
|
}
|
|
|
|
/**
|
|
* SHA1 of this object.
|
|
*
|
|
* @return the sha
|
|
*/
|
|
public String getSha() {
|
|
return sha;
|
|
}
|
|
|
|
/**
|
|
* API URL to this Git data, such as
|
|
* https://api.github.com/repos/jenkinsci/jenkins/git/commits/b72322675eb0114363a9a86e9ad5a170d1d07ac0
|
|
*
|
|
* @return the url
|
|
*/
|
|
public URL getUrl() {
|
|
return GitHub.parseURL(url);
|
|
}
|
|
}
|
|
}
|