diff --git a/pom.xml b/pom.xml index 5ab01b8766..ddc44fb1f5 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ github-api - 1.59 + 1.60-SNAPSHOT GitHub API for Java http://github-api.kohsuke.org/ GitHub API for Java @@ -35,7 +35,7 @@ com.infradna.tool bridge-method-injector - 1.12 + 1.14 @@ -77,7 +77,7 @@ com.infradna.tool bridge-method-annotation - 1.12 + 1.14 org.kohsuke.stapler @@ -107,6 +107,7 @@ org.mockito mockito-all 1.9.5 + test diff --git a/src/main/java/org/kohsuke/github/GHAsset.java b/src/main/java/org/kohsuke/github/GHAsset.java index 902356eebf..fb79e758d6 100644 --- a/src/main/java/org/kohsuke/github/GHAsset.java +++ b/src/main/java/org/kohsuke/github/GHAsset.java @@ -1,26 +1,21 @@ package org.kohsuke.github; import java.io.IOException; -import java.util.Date; /** * Asset in a release. * * @see GHRelease#getAssets() */ -public class GHAsset { +public class GHAsset extends GHObject { GitHub root; GHRepository owner; - private String url; - private String id; private String name; private String label; private String state; private String content_type; private long size; private long download_count; - private Date created_at; - private Date updated_at; private String browser_download_url; public String getContentType() { @@ -32,18 +27,10 @@ public void setContentType(String contentType) throws IOException { this.content_type = contentType; } - public Date getCreatedAt() { - return created_at; - } - public long getDownloadCount() { return download_count; } - public String getId() { - return id; - } - public String getLabel() { return label; } @@ -73,14 +60,6 @@ public String getState() { return state; } - public Date getUpdatedAt() { - return updated_at; - } - - public String getUrl() { - return url; - } - public String getBrowserDownloadUrl() { return browser_download_url; } diff --git a/src/main/java/org/kohsuke/github/GHAuthorization.java b/src/main/java/org/kohsuke/github/GHAuthorization.java index 7fe8fdaf94..b464b9cb68 100644 --- a/src/main/java/org/kohsuke/github/GHAuthorization.java +++ b/src/main/java/org/kohsuke/github/GHAuthorization.java @@ -12,7 +12,7 @@ * @see GitHub#createToken(Collection, String, String) * @see http://developer.github.com/v3/oauth/#create-a-new-authorization */ -public class GHAuthorization { +public class GHAuthorization extends GHObject { public static final String USER = "user"; public static final String USER_EMAIL = "user:email"; public static final String USER_FOLLOW = "user:follow"; @@ -33,24 +33,16 @@ public class GHAuthorization { public static final String ADMIN_KEY = "admin:public_key"; private GitHub root; - private int id; - private String url; private List scopes; private String token; private App app; private String note; private String note_url; - private String updated_at; - private String created_at; public GitHub getRoot() { return root; } - public int getId() { - return id; - } - public List getScopes() { return scopes; } @@ -78,14 +70,6 @@ public String getNote() { public URL getNoteUrl(){ return GitHub.parseURL(note_url); } - - public Date getCreatedAt() { - return GitHub.parseDate(created_at); - } - - public Date getUpdatedAt() { - return GitHub.parseDate(updated_at); - } /*package*/ GHAuthorization wrap(GitHub root) { this.root = root; diff --git a/src/main/java/org/kohsuke/github/GHCommitComment.java b/src/main/java/org/kohsuke/github/GHCommitComment.java index a5f23877f8..7deebbc6ad 100644 --- a/src/main/java/org/kohsuke/github/GHCommitComment.java +++ b/src/main/java/org/kohsuke/github/GHCommitComment.java @@ -12,13 +12,11 @@ * @see GHCommit#listComments() * @see GHCommit#createComment(String, String, Integer, Integer) */ -public class GHCommitComment { +public class GHCommitComment extends GHObject { private GHRepository owner; - String updated_at, created_at; - String body, url, html_url, commit_id; + String body, html_url, commit_id; Integer line; - int id; String path; User user; @@ -32,14 +30,6 @@ public GHRepository getOwner() { return owner; } - public Date getCreatedAt() { - return GitHub.parseDate(created_at); - } - - public Date getUpdatedAt() { - return GitHub.parseDate(updated_at); - } - /** * URL like 'https://github.com/kohsuke/sandbox-ant/commit/8ae38db0ea5837313ab5f39d43a6f73de3bd9000#commitcomment-1252827' to * show this commit comment in a browser. @@ -75,10 +65,6 @@ public int getLine() { return line!=null ? line : -1; } - public int getId() { - return id; - } - /** * Gets the user who put this comment. */ diff --git a/src/main/java/org/kohsuke/github/GHCommitStatus.java b/src/main/java/org/kohsuke/github/GHCommitStatus.java index af9f1d31ca..98112ae2e7 100644 --- a/src/main/java/org/kohsuke/github/GHCommitStatus.java +++ b/src/main/java/org/kohsuke/github/GHCommitStatus.java @@ -10,12 +10,9 @@ * @see GHRepository#getCommitStatus(String) * @see GHCommit#getStatus() */ -public class GHCommitStatus { - String created_at, updated_at; +public class GHCommitStatus extends GHObject { String state; String target_url,description; - int id; - String url; String context; GHUser creator; @@ -27,14 +24,6 @@ public class GHCommitStatus { return this; } - public Date getCreatedAt() { - return GitHub.parseDate(created_at); - } - - public Date getUpdatedAt() { - return GitHub.parseDate(updated_at); - } - public GHCommitState getState() { for (GHCommitState s : GHCommitState.values()) { if (s.name().equalsIgnoreCase(state)) @@ -56,17 +45,6 @@ public String getDescription() { return description; } - public int getId() { - return id; - } - - /** - * API URL of this commit status. - */ - public String getUrl() { - return url; - } - public GHUser getCreator() { return creator; } diff --git a/src/main/java/org/kohsuke/github/GHCompare.java b/src/main/java/org/kohsuke/github/GHCompare.java index d61991fa13..9ca63b6e3b 100644 --- a/src/main/java/org/kohsuke/github/GHCompare.java +++ b/src/main/java/org/kohsuke/github/GHCompare.java @@ -148,6 +148,6 @@ public static class User extends GitUser { } public static enum Status { - behind, ahead, identical + behind, ahead, identical, diverged } } diff --git a/src/main/java/org/kohsuke/github/GHContent.java b/src/main/java/org/kohsuke/github/GHContent.java index 443dd5918d..4900a19214 100644 --- a/src/main/java/org/kohsuke/github/GHContent.java +++ b/src/main/java/org/kohsuke/github/GHContent.java @@ -129,11 +129,19 @@ protected void wrapUp(GHContent[] page) { } public GHContentUpdateResponse update(String newContent, String commitMessage) throws IOException { - return update(newContent, commitMessage, null); + return update(newContent.getBytes(), commitMessage, null); } public GHContentUpdateResponse update(String newContent, String commitMessage, String branch) throws IOException { - String encodedContent = DatatypeConverter.printBase64Binary(newContent.getBytes()); + return update(newContent.getBytes(), commitMessage, branch); + } + + public GHContentUpdateResponse update(byte[] newContentBytes, String commitMessage) throws IOException { + return update(newContentBytes, commitMessage, null); + } + + public GHContentUpdateResponse update(byte[] newContentBytes, String commitMessage, String branch) throws IOException { + String encodedContent = DatatypeConverter.printBase64Binary(newContentBytes); Requester requester = new Requester(owner.root) .with("path", path) diff --git a/src/main/java/org/kohsuke/github/GHDeployment.java b/src/main/java/org/kohsuke/github/GHDeployment.java new file mode 100644 index 0000000000..58fff1a0d4 --- /dev/null +++ b/src/main/java/org/kohsuke/github/GHDeployment.java @@ -0,0 +1,53 @@ +package org.kohsuke.github; + + +import java.net.URL; + +public class GHDeployment extends GHObject { + private GHRepository owner; + private GitHub root; + protected String sha; + protected String ref; + protected String task; + protected Object payload; + protected String environment; + protected String description; + protected String statuses_url; + protected String repository_url; + protected GHUser creator; + + + GHDeployment wrap(GHRepository owner) { + this.owner = owner; + this.root = owner.root; + if(creator != null) creator.wrapUp(root); + return this; + } + + public URL getStatusesUrl() { + return GitHub.parseURL(statuses_url); + } + + public URL getRepositoryUrl() { + return GitHub.parseURL(repository_url); + } + + public String getTask() { + return task; + } + public String getPayload() { + return (String) payload; + } + public String getEnvironment() { + return environment; + } + public GHUser getCreator() { + return creator; + } + public String getRef() { + return ref; + } + public String getSha(){ + return sha; + } +} diff --git a/src/main/java/org/kohsuke/github/GHDeploymentBuilder.java b/src/main/java/org/kohsuke/github/GHDeploymentBuilder.java new file mode 100644 index 0000000000..00d10fad1b --- /dev/null +++ b/src/main/java/org/kohsuke/github/GHDeploymentBuilder.java @@ -0,0 +1,55 @@ +package org.kohsuke.github; + +import java.io.IOException; +import java.util.List; + +//Based on https://developer.github.com/v3/repos/deployments/#create-a-deployment +public class GHDeploymentBuilder { + private final GHRepository repo; + private final Requester builder; + + public GHDeploymentBuilder(GHRepository repo) { + this.repo = repo; + this.builder = new Requester(repo.root); + } + + public GHDeploymentBuilder(GHRepository repo, String ref) { + this(repo); + ref(ref); + } + + public GHDeploymentBuilder ref(String branch) { + builder.with("ref",branch); + return this; + } + public GHDeploymentBuilder task(String task) { + builder.with("task",task); + return this; + } + public GHDeploymentBuilder autoMerge(boolean autoMerge) { + builder.with("auto_merge",autoMerge); + return this; + } + + public GHDeploymentBuilder requiredContexts(List requiredContexts) { + builder.with("required_contexts",requiredContexts); + return this; + } + public GHDeploymentBuilder payload(String payload) { + builder.with("payload",payload); + return this; + } + + public GHDeploymentBuilder environment(String environment) { + builder.with("environment",environment); + return this; + } + public GHDeploymentBuilder description(String description) { + builder.with("description",description); + return this; + } + + public GHDeployment create() throws IOException { + return builder.to(repo.getApiTailUrl("deployments"),GHDeployment.class).wrap(repo); + } +} diff --git a/src/main/java/org/kohsuke/github/GHDeploymentState.java b/src/main/java/org/kohsuke/github/GHDeploymentState.java new file mode 100644 index 0000000000..ff53a6d490 --- /dev/null +++ b/src/main/java/org/kohsuke/github/GHDeploymentState.java @@ -0,0 +1,8 @@ +package org.kohsuke.github; + +/** + * Represents the state of deployment + */ +public enum GHDeploymentState { + PENDING, SUCCESS, ERROR, FAILURE +} diff --git a/src/main/java/org/kohsuke/github/GHDeploymentStatus.java b/src/main/java/org/kohsuke/github/GHDeploymentStatus.java new file mode 100644 index 0000000000..78cf1b2ba2 --- /dev/null +++ b/src/main/java/org/kohsuke/github/GHDeploymentStatus.java @@ -0,0 +1,36 @@ +package org.kohsuke.github; + +import java.net.URL; + +public class GHDeploymentStatus extends GHObject { + private GHRepository owner; + private GitHub root; + protected GHUser creator; + protected String state; + protected String description; + protected String target_url; + protected String deployment_url; + protected String repository_url; + public GHDeploymentStatus wrap(GHRepository owner) { + this.owner = owner; + this.root = owner.root; + if(creator != null) creator.wrapUp(root); + return this; + } + public URL getTargetUrl() { + return GitHub.parseURL(target_url); + } + + public URL getDeploymentUrl() { + return GitHub.parseURL(deployment_url); + } + + public URL getRepositoryUrl() { + return GitHub.parseURL(repository_url); + } + public GHDeploymentState getState() { + return GHDeploymentState.valueOf(state.toUpperCase()); + } + + +} diff --git a/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java new file mode 100644 index 0000000000..4310153800 --- /dev/null +++ b/src/main/java/org/kohsuke/github/GHDeploymentStatusBuilder.java @@ -0,0 +1,30 @@ +package org.kohsuke.github; + +import java.io.IOException; + +public class GHDeploymentStatusBuilder { + private final Requester builder; + private GHRepository repo; + private int deploymentId; + + public GHDeploymentStatusBuilder(GHRepository repo, int deploymentId, GHDeploymentState state) { + this.repo = repo; + this.deploymentId = deploymentId; + this.builder = new Requester(repo.root); + this.builder.with("state",state.toString().toLowerCase()); + } + + public GHDeploymentStatusBuilder description(String description) { + this.builder.with("description",description); + return this; + } + + public GHDeploymentStatusBuilder targetUrl(String targetUrl) { + this.builder.with("target_url",targetUrl); + return this; + } + + public GHDeploymentStatus create() throws IOException { + return builder.to(repo.getApiTailUrl("deployments")+"/"+deploymentId+"/statuses",GHDeploymentStatus.class).wrap(repo); + } +} diff --git a/src/main/java/org/kohsuke/github/GHGist.java b/src/main/java/org/kohsuke/github/GHGist.java index 6cfada36d0..6e3f35d989 100644 --- a/src/main/java/org/kohsuke/github/GHGist.java +++ b/src/main/java/org/kohsuke/github/GHGist.java @@ -4,7 +4,6 @@ import java.io.IOException; import java.util.Collections; -import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; @@ -17,16 +16,16 @@ * @see GitHub#getGist(String) * @see GitHub#createGist() */ -public class GHGist { +public class GHGist extends GHObject { /*package almost final*/ GHUser owner; /*package almost final*/ GitHub root; - private String url, forks_url, commits_url, id, git_pull_url, git_push_url, html_url; + private String forks_url, commits_url, id, git_pull_url, git_push_url, html_url; @JsonProperty("public") private boolean _public; - private String created_at, updated_at, description; + private String description; private int comments; @@ -41,13 +40,6 @@ public GHUser getOwner() { return owner; } - /** - * API URL of this gist, such as 'https://api.github.com/gists/12345' - */ - public String getUrl() { - return url; - } - public String getForksUrl() { return forks_url; } @@ -56,13 +48,6 @@ public String getCommitsUrl() { return commits_url; } - /** - * ID of this gist, such as '12345' - */ - public String getId() { - return id; - } - /** * URL like https://gist.github.com/gists/12345.git */ @@ -82,14 +67,6 @@ public boolean isPublic() { return _public; } - public Date getCreatedAt() { - return GitHub.parseDate(created_at); - } - - public Date getUpdatedAt() { - return GitHub.parseDate(updated_at); - } - public String getDescription() { return description; } diff --git a/src/main/java/org/kohsuke/github/GHHook.java b/src/main/java/org/kohsuke/github/GHHook.java index 4a8ce78b88..7b9c523a05 100644 --- a/src/main/java/org/kohsuke/github/GHHook.java +++ b/src/main/java/org/kohsuke/github/GHHook.java @@ -10,18 +10,17 @@ /** * @author Kohsuke Kawaguchi */ -public class GHHook { +public class GHHook extends GHObject { /** * Repository that the hook belongs to. */ /*package*/ transient GHRepository repository; - String created_at, updated_at, name; + String name; List events; boolean active; Map config; - int id; - + /*package*/ GHHook wrap(GHRepository owner) { this.repository = owner; return this; @@ -46,10 +45,6 @@ public Map getConfig() { return Collections.unmodifiableMap(config); } - public int getId() { - return id; - } - /** * Deletes this hook. */ diff --git a/src/main/java/org/kohsuke/github/GHIssue.java b/src/main/java/org/kohsuke/github/GHIssue.java index bed8ba30f0..53db997adc 100644 --- a/src/main/java/org/kohsuke/github/GHIssue.java +++ b/src/main/java/org/kohsuke/github/GHIssue.java @@ -37,8 +37,11 @@ * * @author Eric Maupin * @author Kohsuke Kawaguchi + * @see GHRepository#getIssue(int) + * @see GitHub#searchIssues() + * @see GHIssueSearchBuilder */ -public class GHIssue { +public class GHIssue extends GHObject { GitHub root; GHRepository owner; @@ -51,11 +54,9 @@ public class GHIssue { protected String body; protected List