Github: Add API function for loading Commit Comments

This commit is contained in:
Aleksey Pivovarov
2013-08-27 19:42:44 +04:00
parent 9bd1660f1d
commit a2fff55d1c
3 changed files with 187 additions and 0 deletions
@@ -616,6 +616,32 @@ public class GithubApiUtil {
return createDataFromRaw(fromJson(result, GithubCommitRaw.class), GithubCommitDetailed.class);
}
@NotNull
public static List<GithubCommitComment> getCommitComments(@NotNull GithubAuthData auth,
@NotNull String user,
@NotNull String repo,
@NotNull String sha) throws IOException {
String path = "/repos/" + user + "/" + repo + "/commits/" + sha + "/comments";
PagedRequest<GithubCommitComment> request =
new PagedRequest<GithubCommitComment>(path, GithubCommitComment.class, GithubCommitCommentRaw[].class, ACCEPT_HTML_BODY_MARKUP);
return request.getAll(auth);
}
@NotNull
public static List<GithubCommitComment> getPullRequestComments(@NotNull GithubAuthData auth,
@NotNull String user,
@NotNull String repo,
long id) throws IOException {
String path = "/repos/" + user + "/" + repo + "/pulls/" + id + "/comments";
PagedRequest<GithubCommitComment> request =
new PagedRequest<GithubCommitComment>(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 {
@@ -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;
}
}
@@ -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> T create(@NotNull Class<T> resultClass) {
if (resultClass.isAssignableFrom(GithubCommitComment.class)) {
return (T)createCommitComment();
}
throw new ClassCastException(this.getClass().getName() + ": bad class type: " + resultClass.getName());
}
}