diff --git a/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java b/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java index 346b14c95..4daad183d 100644 --- a/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java +++ b/src/main/java/org/codelibs/fess/ds/impl/GitBucketDataStoreImpl.java @@ -41,6 +41,9 @@ import org.elasticsearch.common.xcontent.json.JsonXContent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; + /** * @author Keiichi Watanabe */ @@ -310,8 +313,8 @@ public class GitBucketDataStoreImpl extends AbstractDataStoreImpl { logger.warn("Failed to access to " + issueUrl, e); } - // FIXME: Get issue comments from `commentsUrl` - // How to parse JSON-style list? + final String commentsStr = String.join("\n", getIssueComments(issueUrl, authToken)); + contentStr += "\n" + commentsStr; dataMap.put("content", contentStr); dataMap.put("url", viewUrl); @@ -325,6 +328,27 @@ public class GitBucketDataStoreImpl extends AbstractDataStoreImpl { return; } + private List getIssueComments(final String issueUrl, final String authToken) { + final String commentsUrl = issueUrl + "/comments"; + final List commentList = new ArrayList(); + + try (CurlResponse curlResponse = Curl.get(commentsUrl).header("Authorization", "token " + authToken).execute()) { + final String commentsJson = curlResponse.getContentAsString(); + List> comments = new ObjectMapper().readValue(commentsJson, new TypeReference>>() { + }); + + for (Map comment : comments) { + if (comment.containsKey("body")) { + commentList.add((String) comment.get("body")); + } + } + } catch (final Exception e) { + logger.warn("Failed to access to " + issueUrl, e); + } + + return commentList; + } + @SuppressWarnings("unchecked") private void storeWikiContents(final String rootURL, final String authToken, final String wikiLabel, final String owner, final String name, final List roleList, final CrawlingConfig crawlingConfig, final IndexUpdateCallback callback,