diff --git a/src/Components/About/About.tsx b/src/Components/About/About.tsx index a31f5fd..ea974b1 100644 --- a/src/Components/About/About.tsx +++ b/src/Components/About/About.tsx @@ -72,16 +72,16 @@ const About: React.FC = () => {

-
- PlaceHolder -
- + {/*
+ Carson +
*/} + ); }; -export default About; +export default About; \ No newline at end of file diff --git a/src/Components/Data/getGitHubStats.ts b/src/Components/Data/getGitHubStats.ts new file mode 100644 index 0000000..1951f93 --- /dev/null +++ b/src/Components/Data/getGitHubStats.ts @@ -0,0 +1,32 @@ +// https://api.github.com/users/carsonSgit + +import { TopLanguage, LanguageData } from '../Interfaces/githubStats'; + +export const getGitHubProfileStats = async () => { + const response = await fetch('https://api.github.com/users/carsonSgit'); + const data = await response.json(); + return data; +} + +export const getGitHubProfileLanguages = async (): Promise => { + const reposResponse = await fetch('https://api.github.com/users/carsonSgit/repos'); + const reposData = await reposResponse.json(); + + const languageMap: Record = {}; + + for (const repo of reposData) { + const languagesResponse = await fetch(`https://api.github.com/repos/carsonSgit/${repo.name}/languages`); + const languagesData: LanguageData = await languagesResponse.json(); + + for (const [language, bytes] of Object.entries(languagesData)) { + if (language !== 'Jupyter Notebook' && language !== 'HTML' && language !== 'CSS' && language !== 'Mermaid' && language !== 'SCSS') { + languageMap[language] = (languageMap[language] || 0) + bytes; + } + } + } + + return Object.entries(languageMap) + .sort(([, a], [, b]) => b - a) + .slice(0, 5) + .map(([language, bytes]) => ({ language, bytes })); +}; diff --git a/src/Components/Interfaces/githubStats.ts b/src/Components/Interfaces/githubStats.ts new file mode 100644 index 0000000..7a46a09 --- /dev/null +++ b/src/Components/Interfaces/githubStats.ts @@ -0,0 +1,15 @@ +export interface GitHubStats { + login: string; + public_repos: number; + followers: number; + following: number; + } + +export interface LanguageData { + [key: string]: number; +} + +export interface TopLanguage { + language: string; + bytes: number; +} \ No newline at end of file