From a2fff55d1cdedeb215880640fa6b187b6e7b455a Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 27 Aug 2013 19:18:30 +0400 Subject: [PATCH] Github: Add API function for loading Commit Comments --- .../plugins/github/api/GithubApiUtil.java | 26 +++++ .../github/api/GithubCommitComment.java | 102 ++++++++++++++++++ .../github/api/GithubCommitCommentRaw.java | 59 ++++++++++ 3 files changed, 187 insertions(+) create mode 100644 plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitComment.java create mode 100644 plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitCommentRaw.java diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java index 7350aff1383b..98540470aadc 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java +++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubApiUtil.java @@ -616,6 +616,32 @@ public class GithubApiUtil { return createDataFromRaw(fromJson(result, GithubCommitRaw.class), GithubCommitDetailed.class); } + @NotNull + public static List getCommitComments(@NotNull GithubAuthData auth, + @NotNull String user, + @NotNull String repo, + @NotNull String sha) throws IOException { + String path = "/repos/" + user + "/" + repo + "/commits/" + sha + "/comments"; + + PagedRequest request = + new PagedRequest(path, GithubCommitComment.class, GithubCommitCommentRaw[].class, ACCEPT_HTML_BODY_MARKUP); + + return request.getAll(auth); + } + + @NotNull + public static List getPullRequestComments(@NotNull GithubAuthData auth, + @NotNull String user, + @NotNull String repo, + long id) throws IOException { + String path = "/repos/" + user + "/" + repo + "/pulls/" + id + "/comments"; + + PagedRequest request = + new PagedRequest(path, GithubCommitComment.class, GithubCommitCommentRaw[].class, ACCEPT_HTML_BODY_MARKUP); + + return request.getAll(auth); + } + @NotNull public static GithubPullRequest getPullRequest(@NotNull GithubAuthData auth, @NotNull String user, @NotNull String repo, int id) throws IOException { diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitComment.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitComment.java new file mode 100644 index 000000000000..1f13de7bb57f --- /dev/null +++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitComment.java @@ -0,0 +1,102 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.github.api; + +import org.jetbrains.annotations.NotNull; + +import java.util.Date; + +/** + * @author Aleksey Pivovarov + */ +@SuppressWarnings("UnusedDeclaration") +public class GithubCommitComment { + @NotNull private final String myHtmlUrl; + + private final long myId; + @NotNull private final String mySha; + @NotNull private final String myPath; + private final long myPosition; // line number in diff + @NotNull private final String myBodyHtml; + + @NotNull private final GithubUser myUser; + + @NotNull private final Date myCreatedAt; + @NotNull private final Date myUpdatedAt; + + public GithubCommitComment(@NotNull String htmlUrl, + long id, + @NotNull String sha, + @NotNull String path, + long position, + @NotNull String bodyHtml, + @NotNull GithubUser user, + @NotNull Date createdAt, + @NotNull Date updatedAt) { + myHtmlUrl = htmlUrl; + myId = id; + mySha = sha; + myPath = path; + myPosition = position; + myBodyHtml = bodyHtml; + myUser = user; + myCreatedAt = createdAt; + myUpdatedAt = updatedAt; + } + + @NotNull + public String getHtmlUrl() { + return myHtmlUrl; + } + + public long getId() { + return myId; + } + + @NotNull + public String getSha() { + return mySha; + } + + @NotNull + public String getPath() { + return myPath; + } + + public long getPosition() { + return myPosition; + } + + @NotNull + public String getBodyHtml() { + return myBodyHtml; + } + + @NotNull + public GithubUser getUser() { + return myUser; + } + + @NotNull + public Date getCreatedAt() { + return myCreatedAt; + } + + @NotNull + public Date getUpdatedAt() { + return myUpdatedAt; + } +} diff --git a/plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitCommentRaw.java b/plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitCommentRaw.java new file mode 100644 index 000000000000..229b31ab92eb --- /dev/null +++ b/plugins/github/src/org/jetbrains/plugins/github/api/GithubCommitCommentRaw.java @@ -0,0 +1,59 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.plugins.github.api; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Date; + +/** + * @author Aleksey Pivovarov + */ +class GithubCommitCommentRaw implements DataConstructor { + @Nullable public String htmlUrl; + @Nullable public String url; + + @Nullable public Long id; + @Nullable public String commitId; + @Nullable public String path; + @Nullable public Long position; + @Nullable public Long line; + @Nullable public String body; + @Nullable public String bodyHtml; + + @Nullable public GithubUserRaw user; + + @Nullable public Date createdAt; + @Nullable public Date updatedAt; + + @SuppressWarnings("ConstantConditions") + @NotNull + public GithubCommitComment createCommitComment() { + return new GithubCommitComment(htmlUrl, id, commitId, path, position, bodyHtml, user.createUser(), createdAt, updatedAt); + } + + @SuppressWarnings("unchecked") + @NotNull + @Override + public T create(@NotNull Class resultClass) { + if (resultClass.isAssignableFrom(GithubCommitComment.class)) { + return (T)createCommitComment(); + } + + throw new ClassCastException(this.getClass().getName() + ": bad class type: " + resultClass.getName()); + } +}