Github API for Java 사용

Purple·2021년 9월 15일
0

JAVA

목록 보기
5/8

깃허브의 특정 레포지토리의 이슈에 댓글을 남긴 사용자를 체크하는 코드

다음의 사이트를 참고하였으며, 구글링 해봤을때 사용관련 글이 많지는 않아. 직접 api문서를 보면서 하였다.
https://github-api.kohsuke.org/

테스트용으로 레포지토리 생성하였다.
https://github.com/juwon9733/issue_Test

import org.kohsuke.github.*;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class javaStudy {
    public static void main(String[] args) throws IOException {
        // jwt token을 사용하여 auth
        String my_jwt_token = "";
        GitHub gitHub = new GitHubBuilder().withOAuthToken(my_jwt_token).build();

        // repository 할당
        GHRepository repository = gitHub.getRepository("juwon9733/issue_Test");

        // issue 리스트
        List<GHIssue> issues = repository.getIssues(GHIssueState.ALL);
        Map<String, int[]> participantHash = new HashMap<>();

        for (int i = 0; i < issues.size(); i++) {
            PagedIterable<GHIssueComment> ghIssueComments = issues.get(i).listComments();
            for (GHIssueComment ghIssueComment : ghIssueComments) {
                String userName = ghIssueComment.getUser().getName();

                if(participantHash.containsKey(userName)) {
                    int[] ints = participantHash.get(userName);
                    ints[i] = 1;
                }
                else {
                    int[] ints = new int[issues.size()];
                    ints[i] = 1;
                    participantHash.put(userName, ints);
                }
            }
        }

        participantHash.forEach(
                (key, value) -> {
                    System.out.print("| " + key + " | ");
                    int value_sum = 0;
                    for (int i : value) {       // 1: 참여, 0: 미참여
                        System.out.print("." + i);
                        value_sum += i;
                    }
                    float percent = (value_sum * 100)/issues.size();
                    System.out.println(" | " + String.format("%.2f", percent) + "% |");

                }

        );
    }
}

출력)

profile
안녕하세요.

0개의 댓글