Github API 가져오기

이번 주에 PR에 대한 나의 최신telescope이 병합되었습니다. Github 통계를 새로운 issue에 추가하기 위해 모두 Telescope dashboard으로 시작했습니다.

대시보드는 현재 material-dashboard 템플릿을 표시하고 있으며 관련 정보를 한 번에 하나의 PR에 추가할 예정입니다.



관련 통계를 추가하려면 Github API에서 어떤 데이터를 얻을 수 있는지 확인해야 했습니다.

커밋 횟수



먼저 주간 및 연간commit count을 얻는 방법을 찾았습니다. 이 요청은 지난 1년 동안 주당 커밋 수의 배열을 반환합니다.

다음은 curl를 사용한 요청입니다.

curl \
  -H "Accept: application/vnd.github.v3+json" \
  https://api.github.com/repos/Seneca-CDOT/telescope/stats/participation


다음은 Javascript의 fetch입니다.

fetch(`https://api.github.com/repos/Seneca-CDOT/telescope/stats/participation`, {
    headers: { Accept: 'application/vnd.github.v3+json' },
  });
  .then((res) => res.json())
  .then((data) => {
    // use received data
  })


주간 커밋 활동



내가 원하는 두 번째 데이터는 해당 주에 추가된 총 라인과 제거된 라인입니다. weekly commit activity을 가져와서 찾았습니다.
  • https://api.github.com/repos/Seneca-CDOT/telescope/stats/code_frequency

  • 배열의 마지막 요소를 취하면 UNIX timestamp , 행이 추가되고 행이 제거됩니다.

    [
      1636848000,
      876,
      -349
    ]
    


    최신 저자



    최신 커밋의 작성자를 얻으려면 list of commits을 가져와야 했습니다.
  • https://api.github.com/repos/Seneca-CDOT/telescope/commits

  • 응답에는 각 커밋에 대한 많은 정보가 포함되어 있으므로 필요한 정보에만 집중했습니다.
  • 이름
  • 사용자 이름
  • 프로필 사진

  • {
      "commit": {
        "author": {
          "name": "Francesco Menghi",
        },
      },
      "author": {
        "login": "menghif",
        "avatar_url": "https://avatars.githubusercontent.com/u/53121061?v=4",
      },
    }
    


    총 기여자



    마지막으로 나는 레포의 총 기여자 수를 얻는 방법을 원했습니다. 페이지당 1개의 결과로 repository contributors을 가져온 다음 응답 헤더에 반환된 페이지 수를 검색했습니다. Thanks David!

    fetch(`https://api.github.com/repos/Seneca-CDOT/telescope/contributors?per_page=1`, {
      headers: { Accept: 'application/vnd.github.v3+json' },
    });
    .then((res) => res.headers.get('link'))
    .then((data) => {
      const contributors = data.match(/.*"next".*&page=([0-9]*).*"last".*/)[1];
    })
    



    함께 모아서



    최종 결과는 다음과 같습니다.



    모든 가져오기 요청이 포함된 Javascript 코드를 사용할 수 있습니다here.

    결과에 만족하지만 아직 첫 단계일 뿐입니다. 나는 다른 학생들이 수정해야 할 버그를 찾고 버그에 더 많이 기여할 것이라고 확신합니다. 대시보드가 ​​"완료"되면 어떻게 보일지 기대됩니다.

    좋은 웹페이지 즐겨찾기