From 1e32b8c9f333424cfca813bee6285a5d76c5eea2 Mon Sep 17 00:00:00 2001 From: Aryan Kumar Date: Tue, 17 Oct 2023 01:23:08 +0530 Subject: [PATCH 1/3] add: github user stats route --- packages/api/controllers/stats.controller.ts | 31 ++++++++++++++++++++ packages/api/routes/index.ts | 3 ++ 2 files changed, 34 insertions(+) create mode 100644 packages/api/controllers/stats.controller.ts diff --git a/packages/api/controllers/stats.controller.ts b/packages/api/controllers/stats.controller.ts new file mode 100644 index 0000000..a75263c --- /dev/null +++ b/packages/api/controllers/stats.controller.ts @@ -0,0 +1,31 @@ +import { Context } from "hono"; +import axios, { AxiosResponse } from "axios"; + +export default class StatsController { + public stats = async (c: Context) => { + const username: string = c.req.param('username'); + + try { + var userData: AxiosResponse = await axios.get(`https://api.github.com/users/${username}`) + var userRepos: AxiosResponse = await axios.get(`https://api.github.com/users/${username}/repos`) + } catch (err: any) { + if (err.response.status == 404) { + return c.text('User not found', 404) + } else { + return c.text('Something went wrong', 500) + } + } + + let repos: Array = [] + userRepos.data.forEach((element: any) => { + let repo: object = { + id: element.id, + name: element.full_name + } + repos.push(repo) + }); + userData.data.repos = repos + + return c.json(userData.data) + } +} \ No newline at end of file diff --git a/packages/api/routes/index.ts b/packages/api/routes/index.ts index 6d1bbb7..88034cf 100644 --- a/packages/api/routes/index.ts +++ b/packages/api/routes/index.ts @@ -1,11 +1,14 @@ import { Hono } from 'hono'; import UserController from '../controllers/user.controller'; +import StatsController from '../controllers/stats.controller' const app = new Hono(); const userController = new UserController(); +const statsController = new StatsController(); app.get('/login', userController.login); app.get('/login/callback', userController.callback); +app.get('/stats/:username', statsController.stats); export default app; From bd8cd7b2f45bfc8b94dd283562526f71ac881fd0 Mon Sep 17 00:00:00 2001 From: Aryan Kumar Date: Tue, 17 Oct 2023 01:26:48 +0530 Subject: [PATCH 2/3] update: 404 error message --- packages/api/controllers/stats.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/controllers/stats.controller.ts b/packages/api/controllers/stats.controller.ts index a75263c..4f9b84f 100644 --- a/packages/api/controllers/stats.controller.ts +++ b/packages/api/controllers/stats.controller.ts @@ -10,7 +10,7 @@ export default class StatsController { var userRepos: AxiosResponse = await axios.get(`https://api.github.com/users/${username}/repos`) } catch (err: any) { if (err.response.status == 404) { - return c.text('User not found', 404) + return c.text('Does the user exist❓️ Check again 🐒', 404) } else { return c.text('Something went wrong', 500) } From 86a0817092f6a4c5d39ae42a6a5d57bef0a0ec21 Mon Sep 17 00:00:00 2001 From: Aryan Kumar Date: Tue, 17 Oct 2023 01:32:51 +0530 Subject: [PATCH 3/3] update: strict routing set to false --- packages/api/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/index.ts b/packages/api/index.ts index 07f6e7c..178a555 100644 --- a/packages/api/index.ts +++ b/packages/api/index.ts @@ -8,7 +8,7 @@ import { serve } from '@hono/node-server' import routes from './routes' -const app = new Hono() +const app = new Hono({ strict: false }) app.use("/", logger()) app.use("/", cors({