33 * @example To archive contributors leaderboard data in csv file, run `node contributors.js`
44 */
55
6- exports . archiveContributorsLeaderboard = archiveContributorsLeaderboard
6+ exports . archiveContributorsLeaderboard = archiveContributorsLeaderboard ;
7+ exports . getAllRepos = getAllRepos ;
78exports . getAllContributors = getAllContributors ;
89exports . getRepoContributors = getRepoContributors ;
910
10- const https = require ( 'https' ) ;
1111const path = require ( 'path' ) ;
1212
13+ const { makeRequest } = require ( './network.js' ) ;
14+
1315// Configurations (Optional)
1416// Repo owner that you want to analyze
1517const REPO_OWNER = process . env . REPO_OWNER ;
@@ -40,37 +42,23 @@ async function getAllRepos(owner=REPO_OWNER, options) {
4042 if ( options && options . GITHUB_PERSONAL_TOKEN ) {
4143 GITHUB_REQUEST_OPTIONS . headers [ "Authorization" ] = "token " + options . GITHUB_PERSONAL_TOKEN ;
4244 }
43- return new Promise ( ( resolve , reject ) => {
44- let url = `https://api.github.com/orgs/${ owner } /repos?per_page=100&page=${ pageNo } ` ;
45- console . log ( url ) ;
46- https . get ( url , GITHUB_REQUEST_OPTIONS , ( res ) => {
47- console . log ( 'statusCode:' , res . statusCode ) ;
48- // console.log('headers:', res.headers);
49- let data = '' ;
50- res . on ( 'data' , ( d ) => {
51- data += d ;
52- } )
53- res . on ( 'end' , async ( ) => {
54- console . log ( "Repo list request finished" )
55- // console.log(data)
56- let dataJsonArray = JSON . parse ( data ) ;
57- if ( dataJsonArray . length == 100 ) {
58- //It might have more data on the next page
59- pageNo ++ ;
60- try {
61- let dataFromNextPage = await getAllRepos ( owner , { pageNo : pageNo } ) ;
62- dataJsonArray . push ( ...dataFromNextPage ) ;
63- } catch ( err ) {
64- console . log ( "No more pagination needed" )
65- }
66- }
67- resolve ( dataJsonArray ) ;
68- } )
69- } ) . on ( 'error' , ( e ) => {
70- console . error ( e ) ;
71- reject ( e )
72- } ) ;
73- } )
45+ let url = `https://api.github.com/orgs/${ owner } /repos?per_page=100&page=${ pageNo } ` ;
46+ const { res, data } = await makeRequest ( 'GET' , url , Object . assign ( { } , GITHUB_REQUEST_OPTIONS ) ) ;
47+ console . log ( "Repo list request finished" ) ;
48+ console . log ( 'HTTP status: ' , res . statusCode ) ;
49+ // console.log(data)
50+ let dataJsonArray = JSON . parse ( data ) ;
51+ if ( dataJsonArray . length == 100 ) {
52+ //It might have more data on the next page
53+ pageNo ++ ;
54+ try {
55+ let dataFromNextPage = await getAllRepos ( owner , { pageNo : pageNo } ) ;
56+ dataJsonArray . push ( ...dataFromNextPage ) ;
57+ } catch ( err ) {
58+ console . log ( "No more pagination needed" )
59+ }
60+ }
61+ return dataJsonArray ;
7462}
7563
7664/**
@@ -81,37 +69,23 @@ async function getAllRepos(owner=REPO_OWNER, options) {
8169 * @example getRepoContributors('myorghandle/myreponame').then((contributors) => console.log(contributors)).catch((err) => console.log(err))
8270 */
8371async function getRepoContributors ( fullRepoName , pageNo = 1 ) {
84- return new Promise ( ( resolve , reject ) => {
85- let url = `https://api.github.com/repos/${ fullRepoName } /contributors?per_page=100&page=${ pageNo } ` ;
86- console . log ( url ) ;
87- https . get ( url , GITHUB_REQUEST_OPTIONS , ( res ) => {
88- console . log ( 'statusCode:' , res . statusCode ) ;
89- // console.log('headers:', res.headers);
90- let data = '' ;
91- res . on ( 'data' , ( d ) => {
92- data += d ;
93- } )
94- res . on ( 'end' , async ( ) => {
95- console . log ( "Contributors request finished for " + fullRepoName )
96- // console.log(data)
97- let dataJsonArray = JSON . parse ( data ) ;
98- if ( dataJsonArray . length == 100 ) {
99- //It might have more data on the next page
100- pageNo ++ ;
101- try {
102- let dataFromNextPage = await getRepoContributors ( fullRepoName , pageNo ) ;
103- dataJsonArray . push ( ...dataFromNextPage ) ;
104- } catch ( err ) {
105- console . log ( "No more pagination needed" )
106- }
107- }
108- resolve ( dataJsonArray ) ;
109- } )
110- } ) . on ( 'error' , ( e ) => {
111- console . error ( e ) ;
112- reject ( e )
113- } ) ;
114- } )
72+ let url = `https://api.github.com/repos/${ fullRepoName } /contributors?per_page=100&page=${ pageNo } ` ;
73+ console . log ( url ) ;
74+ const { res, data } = await makeRequest ( 'GET' , url , Object . assign ( { } , GITHUB_REQUEST_OPTIONS ) ) ;
75+ console . log ( "Contributors request finished for " + fullRepoName )
76+ // console.log(data)
77+ let dataJsonArray = JSON . parse ( data ) ;
78+ if ( dataJsonArray . length == 100 ) {
79+ //It might have more data on the next page
80+ pageNo ++ ;
81+ try {
82+ let dataFromNextPage = await getRepoContributors ( fullRepoName , pageNo ) ;
83+ dataJsonArray . push ( ...dataFromNextPage ) ;
84+ } catch ( err ) {
85+ console . log ( "No more pagination needed" )
86+ }
87+ }
88+ return dataJsonArray ;
11589}
11690
11791/**
0 commit comments