@@ -9,23 +9,49 @@ import styles from './index.module.css';
99export default function Home ( ) {
1010 const [ codes , setCodes ] = useState ( [ ] ) ;
1111 const [ names , setNames ] = useState ( [ ] ) ;
12-
12+ const [ files , setFiles ] = useState ( [ ] ) ;
13+
14+ const axios = require ( 'axios' ) ;
15+
1316 useEffect ( ( ) => {
14- fetch ( 'https://raw.githubusercontent.com/junnei/codetree-TILs/main/240114/%EA%B7%B8%EB%9E%98%ED%94%84%20%ED%83%90%EC%83%89/graph-traversal.py' )
15- . then ( response => {
16- if ( ! response . ok ) {
17- throw new Error ( 'Network response was not ok' ) ;
18- }
19- return response . text ( ) ;
20- } )
21- . then ( data => {
22- // Python 코드를 가져온 후 상태에 저장합니다.
23- setCodes ( [ "print(1)" , "print(2)" , "print(3)" , "print(4)" ] ) ;
24- setNames ( [ "junnei" , "junnei" , "junnei" , "junnei" ] ) ;
25- } )
26- . catch ( error => console . error ( 'Error fetching Python code:' , error ) ) ;
17+ setCodes ( [ "print(1)" , "print(2)" , "print(3)" , "print(4)" ] ) ;
18+ setNames ( [ "junnei1" , "junnei2" , "junnei3" , "junnei4" ] ) ;
19+ fetchFiles ( )
2720 } , [ ] ) ;
28-
21+
22+
23+ const fetchTreeSHA = async ( owner = "Code-Study" , repo = "Code" , branch = "main" ) => {
24+ try {
25+ const response = await axios . get ( `https://api.github.com/repos/${ owner } /${ repo } /branches/${ branch } ` ) ;
26+ return response . data ;
27+ } catch ( error ) {
28+ console . error ( 'Error fetching repository contents:' , error ) ;
29+ return [ ] ;
30+ }
31+ } ;
32+
33+ const fetchFiles = async ( owner = "Code-Study" , repo = "Code" , branch = "main" , recursive = true ) => {
34+ try {
35+ const responseBranch = await fetchTreeSHA ( owner , repo , branch )
36+ const treeSHA = responseBranch [ "commit" ] [ "commit" ] [ "tree" ] [ "sha" ]
37+ console . log ( treeSHA )
38+ const response = await axios . get ( `https://api.github.com/repos/${ owner } /${ repo } /git/trees/${ treeSHA } ` , {
39+ params : {
40+ recursive : recursive ? "true" : "false"
41+ }
42+ } ) ;
43+ const data = response . data ;
44+ data . tree . forEach ( item => {
45+ if ( item . type === 'blob' ) {
46+ setFiles ( prevFiles => [ ...prevFiles , { type : 'file' , path : item . path } ] ) ;
47+ }
48+ } )
49+ } catch ( error ) {
50+ console . error ( 'Error fetching repository contents:' , error ) ;
51+ return [ ] ;
52+ }
53+ } ;
54+
2955 return (
3056 < Layout title = "Code Study" >
3157 < main >
@@ -36,6 +62,15 @@ export default function Home() {
3662 < div className = { styles . codeEditorWrapper } >
3763 < CodeEditor names = { names } codes = { codes } showButtons />
3864 </ div >
65+
66+ < div >
67+ < h1 > Files</ h1 >
68+ < ul >
69+ { files . map ( ( file , index ) => (
70+ < li key = { index } > { file . path } </ li >
71+ ) ) }
72+ </ ul >
73+ </ div >
3974 </ div >
4075 </ main >
4176 </ Layout >
0 commit comments