diff options
author | S.nishio <nishio@densan-labs.net> | 2014-02-09 01:44:43 +0900 |
---|---|---|
committer | S.nishio <nishio@densan-labs.net> | 2014-02-12 21:53:08 +0900 |
commit | 49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45 (patch) | |
tree | 4280b3e868540172f3561122cff9bc2207e92856 /src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket | |
download | bbprb-49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45.tar.gz |
initial commit
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket')
7 files changed, 517 insertions, 0 deletions
diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketApiClient.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketApiClient.java new file mode 100644 index 0000000..200b81e --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketApiClient.java @@ -0,0 +1,117 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket; + +import org.apache.commons.httpclient.*; +import org.apache.commons.httpclient.auth.AuthScope; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.type.TypeReference; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * Created by nishio + */ +public class BitbucketApiClient { + private static final Logger logger = Logger.getLogger(BitbucketApiClient.class.getName()); + private static final String BITBUCKET_HOST = "bitbucket.org"; + private static final String V1_API_BASE_URL = "https://bitbucket.org/api/1.0/repositories/"; + private static final String V2_API_BASE_URL = "https://bitbucket.org/api/2.0/repositories/"; + private String owner; + private String repositoryName; + private Credentials credentials; + + public BitbucketApiClient(String username, String password, String owner, String repositoryName) { + this.credentials = new UsernamePasswordCredentials(username, password); + this.owner = owner; + this.repositoryName = repositoryName; + } + + public List<BitbucketPullRequestResponseValue> getPullRequests() { + String response = getRequest(V2_API_BASE_URL + this.owner + "/" + this.repositoryName + "/pullrequests/"); + try { + return parsePullRequestJson(response).getPrValues(); + } catch(Exception e) { + logger.log(Level.WARNING, "invalid pull request response.", e); + } + return null; + } + + public List<BitbucketPullRequestComment> getPullRequestComments(String commentOwnerName, String commentRepositoryName, String pullRequestId) { + String response = getRequest( + V1_API_BASE_URL + commentOwnerName + "/" + commentRepositoryName + "/pullrequests/" + pullRequestId + "/comments"); + try { + return parseCommentJson(response); + } catch(Exception e) { + logger.log(Level.WARNING, "invalid pull request response.", e); + } + return null; + } + + public void postPullRequestComment(String pullRequestId, String comment) { + String path = V1_API_BASE_URL + this.owner + "/" + this.repositoryName + "/pullrequests/" + pullRequestId + "/comments"; + try { + NameValuePair content = new NameValuePair("content", comment); + postRequest(path, new NameValuePair[]{ content }); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + + private String getRequest(String path) { + HttpClient client = new HttpClient(); + client.getState().setCredentials(AuthScope.ANY, credentials); + GetMethod httpget = new GetMethod(path); + client.getParams().setAuthenticationPreemptive(true); + String response = null; + try { + client.executeMethod(httpget); + response = httpget.getResponseBodyAsString(); + } catch (HttpException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return response; + } + + private void postRequest(String path, NameValuePair[] params) throws UnsupportedEncodingException { + HttpClient client = new HttpClient(); + client.getState().setCredentials(AuthScope.ANY, credentials); + PostMethod httppost = new PostMethod(path); + httppost.setRequestBody(params); + client.getParams().setAuthenticationPreemptive(true); + try { + client.executeMethod(httppost); + String response = httppost.getResponseBodyAsString(); + logger.info("API Request Response: " + response); + } catch (HttpException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private BitbucketPullRequestResponse parsePullRequestJson(String response) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + BitbucketPullRequestResponse parsedResponse; + parsedResponse = mapper.readValue(response, BitbucketPullRequestResponse.class); + return parsedResponse; + } + + private List<BitbucketPullRequestComment> parseCommentJson(String response) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + List<BitbucketPullRequestComment> parsedResponse; + parsedResponse = mapper.readValue( + response, + new TypeReference<List<BitbucketPullRequestComment>>() { + }); + return parsedResponse; + } + +} + diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestComment.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestComment.java new file mode 100644 index 0000000..2e1e18e --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestComment.java @@ -0,0 +1,118 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonProperty; + +import java.util.Comparator; + +/** + * Created by nishio + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class BitbucketPullRequestComment implements Comparable<BitbucketPullRequestComment> { + private Boolean isEntityAuthor; + private Integer pullRequestId; + private String contentRendered; + private Boolean deleted; + private String UtcLastUpdated; + private Integer commentId; + private String content; + private String UtcCreatedOn; + private Boolean isSpam; + + @JsonProperty("is_entity_author") + public Boolean getIsEntityAuthor() { + return isEntityAuthor; + } + + @JsonProperty("is_entity_author") + public void setIsEntityAuthor(Boolean isEntityAuthor) { + this.isEntityAuthor = isEntityAuthor; + } + + @JsonProperty("pull_request_id") + public Integer getPullRequestId() { + return pullRequestId; + } + + @JsonProperty("pull_request_id") + public void setPullRequestId(Integer pullRequestId) { + this.pullRequestId = pullRequestId; + } + + @JsonProperty("content_rendered") + public String getContentRendered() { + return contentRendered; + } + + @JsonProperty("content_rendered") + public void setContentRendered(String contentRendered) { + this.contentRendered = contentRendered; + } + + public Boolean getDeleted() { + return deleted; + } + + public void setDeleted(Boolean deleted) { + this.deleted = deleted; + } + + @JsonProperty("utc_last_updated") + public String getUtcLastUpdated() { + return UtcLastUpdated; + } + + @JsonProperty("utc_last_updated") + public void setUtcLastUpdated(String utcLastUpdated) { + UtcLastUpdated = utcLastUpdated; + } + + @JsonProperty("comment_id") + public Integer getCommentId() { + return commentId; + } + + @JsonProperty("comment_id") + public void setCommentId(Integer commentId) { + this.commentId = commentId; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + @JsonProperty("utc_created_on") + public String getUtcCreatedOn() { + return UtcCreatedOn; + } + + @JsonProperty("utc_created_on") + public void setUtcCreatedOn(String utcCreatedOn) { + UtcCreatedOn = utcCreatedOn; + } + + @JsonProperty("is_spam") + public Boolean getIsSpam() { + return isSpam; + } + + @JsonProperty("is_spam") + public void setIsSpam(Boolean isSpam) { + this.isSpam = isSpam; + } + + public int compareTo(BitbucketPullRequestComment target) { + if (this.getCommentId() > target.getCommentId()) { + return 1; + } else if (this.getCommentId().equals(target.getCommentId())) { + return 0; + } else { + return -1; + } + } +} diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponse.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponse.java new file mode 100644 index 0000000..82e6009 --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponse.java @@ -0,0 +1,58 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonProperty; + +import java.util.List; + +/** + * Created by nishio + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class BitbucketPullRequestResponse { + private int pageLength; + private List<BitbucketPullRequestResponseValue> prValues; + private int page; + private int size; + + @JsonProperty("pagelen") + public int getPageLength() { + return pageLength; + } + + @JsonProperty("pagelen") + public void setPageLength(int pageLength) { + this.pageLength = pageLength; + } + + @JsonProperty("values") + public List<BitbucketPullRequestResponseValue> getPrValues() { + return prValues; + } + + @JsonProperty("values") + public void setPrValues(List<BitbucketPullRequestResponseValue> prValues) { + this.prValues = prValues; + } + + @JsonProperty("page") + public int getPage() { + return page; + } + + @JsonProperty("page") + public void setPage(int page) { + this.page = page; + } + + @JsonProperty("size") + public int getSize() { + return size; + } + + @JsonProperty("size") + public void setSize(int size) { + this.size = size; + } + +} diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValue.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValue.java new file mode 100644 index 0000000..e8be708 --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValue.java @@ -0,0 +1,130 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonProperty; + +/** + * Created by nishio + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class BitbucketPullRequestResponseValue { + private String description; + private Boolean closeSourceBranch; + private String title; + private BitbucketPullRequestResponseValueRepository destination; + private String reason; + private String closedBy; + private BitbucketPullRequestResponseValueRepository source; + private String state; + private String createdOn; + private String updatedOn; + private String mergeCommit; + private String id; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @JsonProperty("close_source_branch") + public Boolean getCloseSourceBranch() { + return closeSourceBranch; + } + + @JsonProperty("close_source_branch") + public void setCloseSourceBranch(Boolean closeSourceBranch) { + this.closeSourceBranch = closeSourceBranch; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public BitbucketPullRequestResponseValueRepository getDestination() { + return destination; + } + + public void setDestination(BitbucketPullRequestResponseValueRepository destination) { + this.destination = destination; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + @JsonProperty("closed_by") + public String getClosedBy() { + return closedBy; + } + + @JsonProperty("closed_by") + public void setClosedBy(String closedBy) { + this.closedBy = closedBy; + } + + public BitbucketPullRequestResponseValueRepository getSource() { + return source; + } + + public void setSource(BitbucketPullRequestResponseValueRepository source) { + this.source = source; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + @JsonProperty("created_on") + public String getCreatedOn() { + return createdOn; + } + + @JsonProperty("created_on") + public void setCreatedOn(String createdOn) { + this.createdOn = createdOn; + } + + @JsonProperty("updated_on") + public String getUpdatedOn() { + return updatedOn; + } + + @JsonProperty("updated_on") + public void setUpdatedOn(String updatedOn) { + this.updatedOn = updatedOn; + } + + @JsonProperty("merge_commit") + public String getMergeCommit() { + return mergeCommit; + } + + @JsonProperty("merge_commit") + public void setMergeCommit(String mergeCommit) { + this.mergeCommit = mergeCommit; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + +} diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepository.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepository.java new file mode 100644 index 0000000..76eeaf2 --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepository.java @@ -0,0 +1,35 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonProperty; + +/** + * Created by nishio + */ +@JsonIgnoreProperties(ignoreUnknown = true) +public class BitbucketPullRequestResponseValueRepository { + private BitbucketPullRequestResponseValueRepositoryRepository repository; + private BitbucketPullRequestResponseValueRepositoryBranch branch; + + @JsonProperty("repository") + public BitbucketPullRequestResponseValueRepositoryRepository getRepository() { + return repository; + } + + @JsonProperty("repository") + public void setRepository(BitbucketPullRequestResponseValueRepositoryRepository repository) { + this.repository = repository; + } + + @JsonProperty("branch") + public BitbucketPullRequestResponseValueRepositoryBranch getBranch() { + return branch; + } + + @JsonProperty("branch") + public void setBranch(BitbucketPullRequestResponseValueRepositoryBranch branch) { + this.branch = branch; + } +} + + diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryBranch.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryBranch.java new file mode 100644 index 0000000..2fa2eee --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryBranch.java @@ -0,0 +1,16 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class BitbucketPullRequestResponseValueRepositoryBranch { + private String Name; + + public String getName() { + return Name; + } + + public void setName(String name) { + Name = name; + } +}
\ No newline at end of file diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryRepository.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryRepository.java new file mode 100644 index 0000000..d8ff67e --- /dev/null +++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryRepository.java @@ -0,0 +1,43 @@ +package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonProperty; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class BitbucketPullRequestResponseValueRepositoryRepository { + private String fullName; + private String name; + + @JsonProperty("full_name") + public String getFullName() { + return fullName; + } + + @JsonProperty("full_name") + public void setFullName(String fullName) { + this.fullName = fullName; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getOwnerName() { + if (this.fullName != null) { + return this.fullName.split("/")[0]; + } + return null; + } + + public String getRepositoryName() { + if (this.fullName != null) { + return this.fullName.split("/")[1]; + } + return null; + } +} + |