aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket
diff options
context:
space:
mode:
authorS.nishio <nishio@densan-labs.net>2014-02-09 01:44:43 +0900
committerS.nishio <nishio@densan-labs.net>2014-02-12 21:53:08 +0900
commit49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45 (patch)
tree4280b3e868540172f3561122cff9bc2207e92856 /src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket
downloadbbprb-49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45.tar.gz
initial commit
Diffstat (limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket')
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketApiClient.java117
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestComment.java118
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponse.java58
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValue.java130
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepository.java35
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryBranch.java16
-rw-r--r--src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/bitbucket/BitbucketPullRequestResponseValueRepositoryRepository.java43
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;
+ }
+}
+