11const express = require ( 'express' ) ;
2- const cache = new ( require ( './cache' ) . ApiCache ) ( process . env . CODE_STATISTIC || "" ) ;
2+ const cache = new ( require ( './cache' ) . ApiCache ) ( ) ;
3+ const conf = require ( './config' ) ;
34const app = express ( ) ;
45
6+
7+ const isAvailableUser = ( username ) => {
8+ return ( ! ! username ) && ( conf . requires . includes ( "*" ) || conf . requires . includes ( username ) ) ;
9+ }
10+
511async function getLanguage ( user , repo ) {
612 return await cache . requestWithCache ( `/repos/${ user } /${ repo } /languages` ) ;
713}
@@ -22,17 +28,26 @@ async function langStatistics(queue) {
2228 return res ;
2329}
2430
25- app . get ( '/user/:user/' , async function ( req , res ) {
26- const username = req . params . user ;
31+ app . get ( '/:user/' , async function ( req , res ) {
32+ const username = req . params [ 'user' ] ;
33+ if ( ! isAvailableUser ( username ) ) {
34+ res . send ( 'permission denied' ) ;
35+ return ;
36+ }
2737 const response = await cache . requestWithCache ( `/users/${ username } /repos` ) ;
2838 const result = await langStatistics ( Object . values ( response ) . map ( async ( resp ) => {
2939 return await getLanguage ( username , resp [ 'name' ] ) ;
3040 } ) ) ;
3141 res . send ( result ) ;
3242} )
3343
34- app . get ( '/repo/:user/:repo/' , function ( req , res ) {
35- res . send ( getLanguage ( req . params [ 'user' ] , req . params [ 'repo' ] ) ) ;
44+ app . get ( '/:user/:repo/' , async function ( req , res ) {
45+ const username = req . params [ 'user' ] , repo = req . params [ 'repo' ] ;
46+ if ( ! isAvailableUser ( username ) ) {
47+ res . send ( 'permission denied' ) ;
48+ return ;
49+ }
50+ res . send ( await getLanguage ( username , repo ) ) ;
3651} )
3752
3853app . listen ( 3000 ) ;
0 commit comments