From a160d891bd5e4fd105302208be6c7464d7616321 Mon Sep 17 00:00:00 2001 From: Junseo Park Date: Thu, 25 Feb 2021 16:44:40 +0900 Subject: [PATCH] feat: added icon option --- pages/api/widget/bots/[type]/[id].ts | 8 +++++--- utils/Yup.ts | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/pages/api/widget/bots/[type]/[id].ts b/pages/api/widget/bots/[type]/[id].ts index 2aca0f0..64e5c4f 100644 --- a/pages/api/widget/bots/[type]/[id].ts +++ b/pages/api/widget/bots/[type]/[id].ts @@ -8,7 +8,7 @@ import { get } from '@utils/Query' import { BotBadgeType, DiscordEnpoints } from '@utils/Constants' const Widget: NextApiHandler = async(req: ApiRequest, res: NextApiResponse) => { - const { id: param, type, style='flat', scale=1 } = req.query + const { id: param, type, style='flat', scale=1, icon=true } = req.query const splitted = param.split('.') const validated = await WidgetOptionsSchema.validate({ @@ -16,7 +16,8 @@ const Widget: NextApiHandler = async(req: ApiRequest, res: NextApiResponse) => { ext: splitted[splitted.length - 1], style, type, - scale + scale, + icon }).then(el=> el).catch(e=> { ResponseWrapper(res, { code: 400, errors: e.errors }) return null @@ -34,7 +35,7 @@ const Widget: NextApiHandler = async(req: ApiRequest, res: NextApiResponse) => { ...BotBadgeType(data)[type], style: validated.style, scale: validated.scale, - icon: `data:image/png;base64,${img.toString('base64')}` + icon: validated.icon ? `data:image/png;base64,${img.toString('base64')}` : null } res.send(badgen(badgeData)) @@ -47,6 +48,7 @@ interface ApiRequest extends NextApiRequest { id: string style?: string scale?: string + icon?: string } } diff --git a/utils/Yup.ts b/utils/Yup.ts index a9bfe4e..3af42fa 100644 --- a/utils/Yup.ts +++ b/utils/Yup.ts @@ -43,7 +43,8 @@ export const WidgetOptionsSchema: Yup.SchemaOf = Yup.object({ ext: Yup.mixed().oneOf(['svg']).required(), type: Yup.mixed().oneOf(['votes', 'servers', 'status']).required(), scale: Yup.number().positive().min(0.5).max(3).required(), - style: Yup.mixed<'flat'|'classic'>().oneOf(['flat', 'classic']).default('flat') + style: Yup.mixed<'flat'|'classic'>().oneOf(['flat', 'classic']).default('flat'), + icon: Yup.boolean().default(true) }) interface WidgetOptions { @@ -52,6 +53,7 @@ interface WidgetOptions { type: widgetType scale: number style: 'flat' | 'classic' + icon: boolean } type widgetType = 'votes' | 'servers' | 'status'