From 6dcdeed556ed35fe234411cb2ec34a93597c0acf Mon Sep 17 00:00:00 2001 From: Antoine D Date: Thu, 10 Oct 2024 15:20:43 +0200 Subject: [PATCH 1/3] fix: refactor badge.ts to use volume system for image loading --- assets/badges/blank.png | Bin 0 -> 2313 bytes src/utils/badge.ts | 34 ++++++++++++++++++---------------- 2 files changed, 18 insertions(+), 16 deletions(-) create mode 100644 assets/badges/blank.png diff --git a/assets/badges/blank.png b/assets/badges/blank.png new file mode 100644 index 0000000000000000000000000000000000000000..c3dce812a28411a116b2ec50ebb32585788e5418 GIT binary patch literal 2313 zcmeAS@N?(olHy`uVBq!ia0y~yU|h+-z%-A82`Dn*W^oIUVk{1FcVbv~PUa<$!;&U>cv7h@-A}f&3S>O>_%)r2R7=#&*=dVa%VBnbN>Eakt5%>0rAtQqV&w&k%_2(ZS zbe+7Mud1w^A?cmIL+5u!*L&bP0l+XkK-@Twh literal 0 HcmV?d00001 diff --git a/src/utils/badge.ts b/src/utils/badge.ts index a4793936..e2e3bb70 100644 --- a/src/utils/badge.ts +++ b/src/utils/badge.ts @@ -1,28 +1,30 @@ import axios, { AxiosResponse } from 'axios'; -import PDFkit from 'pdfkit'; +import { readFileSync } from 'fs'; +import PDFkit, { file } from 'pdfkit'; import sharp from 'sharp'; import { Badge } from '../types'; -import env from './env'; -const imageBase = async (base64: string) => { - // convert webp base64 to png base64 - const Image = sharp(Buffer.from(base64, 'base64')); - return `data:image/png;base64,${(await Image.toFormat('png').toBuffer()).toString('base64')}`; +const getImage = (filename: string) => { + try { + return `data:image/png;base64,${readFileSync(`assets/badges/${filename}`, 'base64')}`; + } catch { + return `data:image/png;base64,${readFileSync(`assets/badges/blank.png`, 'base64')}`; + } }; -const loadImageBadgeRestricted = () => imageBase(env.badge.badge_restricted); -const loadImageBadgeOrgaPrice = () => imageBase(env.badge.badge_orgaprice); -const loadImageBadgeFullAccess = () => imageBase(env.badge.badge_fullaccess); -const loadImageBadgeInvite = () => imageBase(env.badge.badge_invite); +const loadImageBadgeRestricted = () => getImage('badge-restricted.png'); +const loadImageBadgeOrgaPrice = () => getImage('badge-orgaprice.png'); +const loadImageBadgeFullAccess = () => getImage('badge-fullaccess.png'); +const loadImageBadgeInvite = () => getImage('badge-invite.png'); -const loadBackRestricted = () => imageBase(env.badge.badge_restricted_back); -const loadBackOrgaPrice = () => imageBase(env.badge.badge_orgaprice_back); -const loadBackFullAccess = () => imageBase(env.badge.badge_fullaccess_back); -const loadBackInvite = () => imageBase(env.badge.badge_invite_back); +const loadBackRestricted = () => getImage('back-restricted.png'); +const loadBackOrgaPrice = () => getImage('back-orgaprice.png'); +const loadBackFullAccess = () => getImage('back-fullaccess.png'); +const loadBackInvite = () => getImage('back-invite.png'); type BadgePermission = 'restricted' | 'orgaprice' | 'fullaccess' | 'invite'; -const getBack = (permission: BadgePermission): Promise => { +const getBack = (permission: BadgePermission): string => { switch (permission) { case 'restricted': { return loadBackRestricted(); @@ -46,7 +48,7 @@ const getBack = (permission: BadgePermission): Promise => { } }; -const getBadge = (permission: BadgePermission): Promise => { +const getBadge = (permission: BadgePermission): string => { switch (permission) { case 'restricted': { return loadImageBadgeRestricted(); From bae735db7f7fbfb5464cbaadf9ed659c865d0583 Mon Sep 17 00:00:00 2001 From: Antoine D Date: Thu, 10 Oct 2024 15:23:09 +0200 Subject: [PATCH 2/3] fix: lint --- src/utils/badge.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/badge.ts b/src/utils/badge.ts index e2e3bb70..3b053f2c 100644 --- a/src/utils/badge.ts +++ b/src/utils/badge.ts @@ -1,6 +1,6 @@ import axios, { AxiosResponse } from 'axios'; import { readFileSync } from 'fs'; -import PDFkit, { file } from 'pdfkit'; +import PDFkit from 'pdfkit'; import sharp from 'sharp'; import { Badge } from '../types'; From cc8d672463d44162a8e57da232604ecaab7fafa4 Mon Sep 17 00:00:00 2001 From: Antoine D Date: Thu, 10 Oct 2024 15:30:10 +0200 Subject: [PATCH 3/3] fix: update env --- .env.example | 10 ---------- .env.test.example | 9 --------- src/utils/env.ts | 10 ---------- 3 files changed, 29 deletions(-) diff --git a/.env.example b/.env.example index d92742a8..3b99fdf7 100644 --- a/.env.example +++ b/.env.example @@ -71,13 +71,3 @@ DISCORD_WEBHOOK_CONTACT= # Some more random variables API_RATE_LIMIT=12 API_CART_LIFESPAN=3600 - -# Base 64 encoded image for the badge template -BADGE_RESTRICTED="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_RESTRICTED_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_FULLACCESS="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_FULLACCESS_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_ORGAPRICE="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_ORGAPRICE_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_INVITE="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_INVITE_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" \ No newline at end of file diff --git a/.env.test.example b/.env.test.example index a303fa24..69a8d251 100644 --- a/.env.test.example +++ b/.env.test.example @@ -8,12 +8,3 @@ DATABASE_URL=mysql://dev:dev@localhost/arena_test LOG_LEVEL=silly LOG_IN_TEST=false - -BADGE_RESTRICTED="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_RESTRICTED_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_FULLACCESS="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_FULLACCESS_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_ORGAPRICE="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_ORGAPRICE_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_INVITE="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" -BADGE_INVITE_BACK="UklGRjYAAABXRUJQVlA4ICoAAACwAQCdASoFAAUAA8BiJZwAAp1sr3oAAPv++hpsEWcij+2s5Q/cZFuOAAA=" \ No newline at end of file diff --git a/src/utils/env.ts b/src/utils/env.ts index e54bc726..b3dfce76 100755 --- a/src/utils/env.ts +++ b/src/utils/env.ts @@ -142,16 +142,6 @@ const env = { enabledInTest: loadEnv('LOG_IN_TEST') === 'true', sentryDsn: loadEnv('LOG_SENTRY_DSN'), }, - badge: { - badge_restricted: loadEnv('BADGE_RESTRICTED'), - badge_orgaprice: loadEnv('BADGE_ORGAPRICE'), - badge_fullaccess: loadEnv('BADGE_FULLACCESS'), - badge_invite: loadEnv('BADGE_INVITE'), - badge_restricted_back: loadEnv('BADGE_RESTRICTED_BACK'), - badge_orgaprice_back: loadEnv('BADGE_ORGAPRICE_BACK'), - badge_fullaccess_back: loadEnv('BADGE_FULLACCESS_BACK'), - badge_invite_back: loadEnv('BADGE_INVITE_BACK'), - }, }; // Create a warn log array to use it after winsotn initialization