-
Notifications
You must be signed in to change notification settings - Fork 736
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Expanded GHProject with columns and cards. Also added tests for proje…
…cts, columns and cards
- Loading branch information
1 parent
b20c2ba
commit fc08711
Showing
7 changed files
with
536 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
package org.kohsuke.github; | ||
|
||
import org.apache.commons.lang3.StringUtils; | ||
|
||
import java.io.FileNotFoundException; | ||
import java.io.IOException; | ||
import java.net.URL; | ||
|
||
import static org.kohsuke.github.Previews.INERTIA; | ||
|
||
/** | ||
* @author Gunnar Skjold | ||
*/ | ||
public class GHProjectCard extends GHObject { | ||
private GitHub root; | ||
private GHProject project; | ||
private GHProjectColumn column; | ||
|
||
private String note; | ||
private GHUser creator; | ||
private String content_url, project_url, column_url; | ||
private boolean archived; | ||
|
||
public URL getHtmlUrl() throws IOException { | ||
return null; | ||
} | ||
|
||
public GHProjectCard wrap(GitHub root) { | ||
this.root = root; | ||
return this; | ||
} | ||
|
||
public GHProjectCard wrap(GHProjectColumn column) { | ||
this.column = column; | ||
this.project = column.project; | ||
this.root = column.root; | ||
return this; | ||
} | ||
|
||
public GitHub getRoot() { | ||
return root; | ||
} | ||
|
||
public GHProject getProject() throws IOException { | ||
if(project == null) { | ||
try { | ||
project = root.retrieve().to(getProjectUrl().getPath(), GHProject.class).wrap(root); | ||
} catch (FileNotFoundException e) { | ||
return null; | ||
} | ||
} | ||
return project; | ||
} | ||
|
||
public GHProjectColumn getColumn() throws IOException { | ||
if(column == null) { | ||
try { | ||
column = root.retrieve().to(getColumnUrl().getPath(), GHProjectColumn.class).wrap(root); | ||
} catch (FileNotFoundException e) { | ||
return null; | ||
} | ||
} | ||
return column; | ||
} | ||
|
||
public GHIssue getContent() throws IOException { | ||
if(StringUtils.isEmpty(content_url)) | ||
return null; | ||
try { | ||
if(content_url.contains("/pulls")) { | ||
return root.retrieve().to(getContentUrl().getPath(), GHPullRequest.class).wrap(root); | ||
} else { | ||
return root.retrieve().to(getContentUrl().getPath(), GHIssue.class).wrap(root); | ||
} | ||
} catch (FileNotFoundException e) { | ||
return null; | ||
} | ||
} | ||
|
||
public String getNote() { | ||
return note; | ||
} | ||
|
||
public GHUser getCreator() { | ||
return creator; | ||
} | ||
|
||
public URL getContentUrl() { | ||
return GitHub.parseURL(content_url); | ||
} | ||
|
||
public URL getProjectUrl() { | ||
return GitHub.parseURL(project_url); | ||
} | ||
|
||
public URL getColumnUrl() { | ||
return GitHub.parseURL(column_url); | ||
} | ||
|
||
public boolean isArchived() { | ||
return archived; | ||
} | ||
|
||
public void setNote(String note) throws IOException { | ||
edit("note", note); | ||
} | ||
|
||
public void setArchived(boolean archived) throws IOException { | ||
edit("archived", archived); | ||
} | ||
|
||
private void edit(String key, Object value) throws IOException { | ||
new Requester(root).withPreview(INERTIA)._with(key, value).method("PATCH").to(getApiRoute()); | ||
} | ||
|
||
protected String getApiRoute() { | ||
return String.format("/projects/columns/cards/%d", id); | ||
} | ||
|
||
public void delete() throws IOException { | ||
new Requester(root).withPreview(INERTIA).method("DELETE").to(getApiRoute()); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
package org.kohsuke.github; | ||
|
||
import java.io.FileNotFoundException; | ||
import java.io.IOException; | ||
import java.net.URL; | ||
|
||
import static org.kohsuke.github.Previews.INERTIA; | ||
|
||
/** | ||
* @author Gunnar Skjold | ||
*/ | ||
public class GHProjectColumn extends GHObject { | ||
protected GitHub root; | ||
protected GHProject project; | ||
|
||
private String name; | ||
private String project_url; | ||
|
||
@Override | ||
public URL getHtmlUrl() throws IOException { | ||
return null; | ||
} | ||
|
||
public GHProjectColumn wrap(GitHub root) { | ||
this.root = root; | ||
return this; | ||
} | ||
|
||
public GHProjectColumn wrap(GHProject project) { | ||
this.project = project; | ||
this.root = project.root; | ||
return this; | ||
} | ||
|
||
public GitHub getRoot() { | ||
return root; | ||
} | ||
|
||
public GHProject getProject() throws IOException { | ||
if(project == null) { | ||
try { | ||
project = root.retrieve().to(getProjectUrl().getPath(), GHProject.class).wrap(root); | ||
} catch (FileNotFoundException e) { | ||
return null; | ||
} | ||
} | ||
return project; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public URL getProjectUrl() { | ||
return GitHub.parseURL(project_url); | ||
} | ||
|
||
public void setName(String name) throws IOException { | ||
edit("name", name); | ||
} | ||
|
||
private void edit(String key, Object value) throws IOException { | ||
new Requester(root).withPreview(INERTIA)._with(key, value).method("PATCH").to(getApiRoute()); | ||
} | ||
|
||
protected String getApiRoute() { | ||
return String.format("/projects/columns/%d", id); | ||
} | ||
|
||
public void delete() throws IOException { | ||
new Requester(root).withPreview(INERTIA).method("DELETE").to(getApiRoute()); | ||
} | ||
|
||
public PagedIterable<GHProjectCard> listCards() throws IOException { | ||
final GHProjectColumn column = this; | ||
return new PagedIterable<GHProjectCard>() { | ||
public PagedIterator<GHProjectCard> _iterator(int pageSize) { | ||
return new PagedIterator<GHProjectCard>(root.retrieve().withPreview(INERTIA) | ||
.asIterator(String.format("/projects/columns/%d/cards", id), GHProjectCard[].class, pageSize)) { | ||
@Override | ||
protected void wrapUp(GHProjectCard[] page) { | ||
for (GHProjectCard c : page) | ||
c.wrap(column); | ||
} | ||
}; | ||
} | ||
}; | ||
} | ||
|
||
public GHProjectCard createCard(String note) throws IOException { | ||
return root.retrieve().method("POST") | ||
.withPreview(INERTIA) | ||
.with("note", note) | ||
.to(String.format("/projects/columns/%d/cards", id), GHProjectCard.class).wrap(this); | ||
} | ||
|
||
public GHProjectCard createCard(GHIssue issue) throws IOException { | ||
return root.retrieve().method("POST") | ||
.withPreview(INERTIA) | ||
.with("content_type", issue instanceof GHPullRequest ? "PullRequest" : "Issue") | ||
.with("content_id", issue.getId()) | ||
.to(String.format("/projects/columns/%d/cards", id), GHProjectCard.class).wrap(this); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.