diff --git a/next.config.js b/next.config.js index 0d60710..58a97fa 100644 --- a/next.config.js +++ b/next.config.js @@ -1,3 +1,3 @@ module.exports = { - reactStrictMode: true, + reactStrictMode: true } diff --git a/pages/api/[...id].ts b/pages/api/[...id].ts index 73a79c3..3a95238 100644 --- a/pages/api/[...id].ts +++ b/pages/api/[...id].ts @@ -13,14 +13,16 @@ export default function handler( res: NextApiResponse ) { let userid = req.query.id[0]; + res.setHeader("Content-Type", "image/svg+xml; charset=utf-8"); axios.get(`https://api.lanyard.rest/v1/users/${userid}`) .then((response) => { - renderCard(response.data); - res.status(200).json(response.data); + // let svg = renderCard(response.data); + res.send(renderCard(response.data)); }) - .catch((e) => { - res.send({ error: {e} }) + .catch((err) => { + console.log(err); + res.send({ error: 'Please provide a valid Discord user ID!' }) }); console.log(req.query); diff --git a/public/assets/badges/Bug_Hunter_Level_1.png b/public/assets/badges/Bug_Hunter_Level_1.png new file mode 100644 index 0000000..027be82 Binary files /dev/null and b/public/assets/badges/Bug_Hunter_Level_1.png differ diff --git a/public/assets/badges/Bug_Hunter_Level_2.png b/public/assets/badges/Bug_Hunter_Level_2.png new file mode 100644 index 0000000..64d5642 Binary files /dev/null and b/public/assets/badges/Bug_Hunter_Level_2.png differ diff --git a/public/assets/badges/Discord_Employee.png b/public/assets/badges/Discord_Employee.png new file mode 100644 index 0000000..2058794 Binary files /dev/null and b/public/assets/badges/Discord_Employee.png differ diff --git a/public/assets/badges/Early_Supporter.png b/public/assets/badges/Early_Supporter.png new file mode 100644 index 0000000..adfa85b Binary files /dev/null and b/public/assets/badges/Early_Supporter.png differ diff --git a/public/assets/badges/Early_Verified_Bot_Developer.png b/public/assets/badges/Early_Verified_Bot_Developer.png new file mode 100644 index 0000000..f6f7d23 Binary files /dev/null and b/public/assets/badges/Early_Verified_Bot_Developer.png differ diff --git a/public/assets/badges/House_Balance.png b/public/assets/badges/House_Balance.png new file mode 100644 index 0000000..b2f2d0d Binary files /dev/null and b/public/assets/badges/House_Balance.png differ diff --git a/public/assets/badges/House_Bravery.png b/public/assets/badges/House_Bravery.png new file mode 100644 index 0000000..a775a12 Binary files /dev/null and b/public/assets/badges/House_Bravery.png differ diff --git a/public/assets/badges/House_Brilliance.png b/public/assets/badges/House_Brilliance.png new file mode 100644 index 0000000..eaf8766 Binary files /dev/null and b/public/assets/badges/House_Brilliance.png differ diff --git a/public/assets/badges/HypeSquad_Events.png b/public/assets/badges/HypeSquad_Events.png new file mode 100644 index 0000000..f9e3cb4 Binary files /dev/null and b/public/assets/badges/HypeSquad_Events.png differ diff --git a/public/assets/badges/Partnered_Server_Owner.png b/public/assets/badges/Partnered_Server_Owner.png new file mode 100644 index 0000000..df94062 Binary files /dev/null and b/public/assets/badges/Partnered_Server_Owner.png differ diff --git a/src/LanyardTypes.ts b/src/LanyardTypes.ts index 2f22c8e..674a604 100644 --- a/src/LanyardTypes.ts +++ b/src/LanyardTypes.ts @@ -1,3 +1,5 @@ +//thanks alistair @ uwu.red + export interface Root { success: boolean; data: Data; diff --git a/src/getFlags.ts b/src/getFlags.ts new file mode 100644 index 0000000..6f9ed82 --- /dev/null +++ b/src/getFlags.ts @@ -0,0 +1,36 @@ +export const getFlags = (flag:number): string[] => { + let flags: string[] = []; + + if(flag & 1){ + flags.push("Discord_Employee") + } + if(flag & 2){ + flags.push("Partnered_Server_Owner") + } + if(flag & 4){ + flags.push("HypeSquad_Events") + } + if(flag & 8){ + flags.push("Bug_Hunter_Level_1") + } + if(flag & 64){ + flags.push("House_Bravery") + } + if(flag & 128){ + flags.push("House_Brilliance") + } + if(flag & 256){ + flags.push("House_Balance") + } + if(flag & 512){ + flags.push("Early_Supporter") + } + if(flag & 16384){ + flags.push("Bug_Hunter_Level_2") + } + if(flag & 131072){ + flags.push("Early_Verified_Bot_Developer") + } + + return flags; +} \ No newline at end of file diff --git a/src/renderCard.ts b/src/renderCard.ts deleted file mode 100644 index 9f26f92..0000000 --- a/src/renderCard.ts +++ /dev/null @@ -1,8 +0,0 @@ -import * as LanyardTypes from './LanyardTypes'; - -const renderCard = (data: LanyardTypes.Root): any => { - //create svg, foreign object almost everything lol - console.log(data); -} - -export default renderCard; \ No newline at end of file diff --git a/src/renderCard.tsx b/src/renderCard.tsx new file mode 100644 index 0000000..2634548 --- /dev/null +++ b/src/renderCard.tsx @@ -0,0 +1,115 @@ +import * as LanyardTypes from './LanyardTypes'; +import { useState } from "react"; +import { getFlags } from "./getFlags"; +const renderCard = (body: LanyardTypes.Root): any => { + //create svg, foreign object almost everything lol + + let avatarBorderColor: string = "#747F8D"; + let userStatus: string = ""; + + switch(body.data.discord_status){ + case "online": + avatarBorderColor = "#43B581"; + break; + case "idle": + avatarBorderColor = "#FAA61A"; + break; + case "dnd": + avatarBorderColor = "#F04747"; + break; + case "offline": + avatarBorderColor = "#747F8D"; + break; + } + + let flags: string[] = getFlags(body.data.discord_user.public_flags); + + if(body.data.activities[0] && body.data.activities[0].type === 4) userStatus = body.data.activities[0].state; + + console.log(flags); + + return ` + + +
+
+ +
+
+
+ +

+ ${body.data.discord_user.username}#${body.data.discord_user.discriminator} +

+ + ${ + flags.map((v) => { + return( + `` + ) + }).join('') + } + +
+ +

+ ${userStatus} +

+ +
+
+
+
+ `; +} + +export default renderCard; \ No newline at end of file