From 8ef82ba5bd02297d56653bfc35316a28bc2a6468 Mon Sep 17 00:00:00 2001 From: Christopher Lane Date: Thu, 25 Apr 2024 22:17:25 -0400 Subject: [PATCH 1/4] Add color support to badges --- src/routes/plugins/[owner]/[plugin]/shield/+server.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts index 6e13fd2b..98a78099 100644 --- a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts +++ b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts @@ -2,16 +2,22 @@ import { getPlugin } from '$lib/server/prisma/neovimplugins/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{plugin-usage}-22c55e?logo=neovim&label=configs%20using%20{repo-name}&labelColor=1e40af&link=https://dotfyle.com/plugins/{repo-owner}/{repo-name}&style={style}'; + 'https://img.shields.io/badge/{plugin-usage}-{color}?logo=neovim&label=configs%20using%20{repo-name}&labelColor={label_color}&link=https://dotfyle.com/plugins/{repo-owner}/{repo-name}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { owner, plugin: plugin } = event.params; const style = event.url.searchParams.get('style') ?? 'flat'; + + // Add color support + sanitize input + const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; + const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const neovimPlugin = await getPlugin(owner, plugin); const usage = neovimPlugin.configCount; const url = BASE_URL.replaceAll('{repo-owner}', owner) .replaceAll('{repo-name}', plugin) .replaceAll('{plugin-usage}', usage.toString()) + .replaceAll('{color}', color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ From 7435560412abe7ee16f71a2acd69d0cd26b6d0ef Mon Sep 17 00:00:00 2001 From: Makaze Date: Thu, 25 Apr 2024 22:41:26 -0400 Subject: [PATCH 2/4] Add color options to all badges --- src/routes/[username]/[slug]/badges/leaderkey/+server.ts | 9 ++++++++- .../[username]/[slug]/badges/plugin-manager/+server.ts | 9 ++++++++- src/routes/[username]/[slug]/badges/plugins/+server.ts | 9 ++++++++- src/routes/plugins/[owner]/[plugin]/shield/+server.ts | 5 +++-- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/routes/[username]/[slug]/badges/leaderkey/+server.ts b/src/routes/[username]/[slug]/badges/leaderkey/+server.ts index 3265f10a..a7b2f6fd 100644 --- a/src/routes/[username]/[slug]/badges/leaderkey/+server.ts +++ b/src/routes/[username]/[slug]/badges/leaderkey/+server.ts @@ -2,16 +2,23 @@ import { getConfigBySlug } from '$lib/server/prisma/neovimconfigs/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-22c55e?logo=neovim&label={label}&labelColor=1e40af&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={label_color}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; const style = event.url.searchParams.get('style') ?? 'flat'; + + // Add color support + sanitize input + const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; + const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const neovimConfig = await getConfigBySlug(username, slug); const url = BASE_URL.replaceAll('{repo-owner}', username) .replaceAll('{repo-slug}', slug) .replaceAll('{label}', `leaderkey`) .replaceAll('{value}', neovimConfig.leaderkey) + .replaceAll('{color}', color) + .replaceAll('{label_color}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts b/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts index 89210bbe..a28d6e02 100644 --- a/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts +++ b/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts @@ -2,11 +2,16 @@ import { prismaClient } from '$lib/server/prisma/client'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-22c55e?logo=neovim&label={label}&labelColor=1e40af&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={label_color}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; const style = event.url.searchParams.get('style') ?? 'flat'; + + // Add color support + sanitize input + const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; + const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const pluginManagerInstallation = await prismaClient.neovimConfigPlugins.findFirst({ where: { config: { @@ -27,6 +32,8 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{repo-slug}', slug) .replaceAll('{label}', `plugin manager`) .replaceAll('{value}', pluginManagerInstallation?.plugin?.name ?? 'unknown') + .replaceAll('{color}', color) + .replaceAll('{label_color}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/[username]/[slug]/badges/plugins/+server.ts b/src/routes/[username]/[slug]/badges/plugins/+server.ts index 4d0d395c..26c525d0 100644 --- a/src/routes/[username]/[slug]/badges/plugins/+server.ts +++ b/src/routes/[username]/[slug]/badges/plugins/+server.ts @@ -2,17 +2,24 @@ import { getConfigBySlug } from '$lib/server/prisma/neovimconfigs/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-22c55e?logo=neovim&label={label}&labelColor=1e40af&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={label_color}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; const style = event.url.searchParams.get('style') ?? 'flat'; + + // Add color support + sanitize input + const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; + const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const neovimConfig = await getConfigBySlug(username, slug); const pluginCount = neovimConfig.pluginCount; const url = BASE_URL.replaceAll('{repo-owner}', username) .replaceAll('repo-slug', slug) .replaceAll('{label}', `plugins installed`) .replaceAll('{value}', pluginCount.toString()) + .replaceAll('{color}', color) + .replaceAll('{label_color}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts index 98a78099..ce25d251 100644 --- a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts +++ b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts @@ -7,17 +7,18 @@ const BASE_URL = export const GET: RequestHandler = async function (event: RequestEvent) { const { owner, plugin: plugin } = event.params; const style = event.url.searchParams.get('style') ?? 'flat'; - + // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; - + const neovimPlugin = await getPlugin(owner, plugin); const usage = neovimPlugin.configCount; const url = BASE_URL.replaceAll('{repo-owner}', owner) .replaceAll('{repo-name}', plugin) .replaceAll('{plugin-usage}', usage.toString()) .replaceAll('{color}', color) + .replaceAll('{label_color}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ From 972e0c360afaed45de807c9e2db87a2f466b70ef Mon Sep 17 00:00:00 2001 From: Makaze Date: Thu, 25 Apr 2024 22:49:29 -0400 Subject: [PATCH 3/4] Change url param to match shields.io --- src/routes/[username]/[slug]/badges/leaderkey/+server.ts | 6 +++--- .../[username]/[slug]/badges/plugin-manager/+server.ts | 6 +++--- src/routes/[username]/[slug]/badges/plugins/+server.ts | 6 +++--- src/routes/plugins/[owner]/[plugin]/shield/+server.ts | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/routes/[username]/[slug]/badges/leaderkey/+server.ts b/src/routes/[username]/[slug]/badges/leaderkey/+server.ts index a7b2f6fd..352fffc9 100644 --- a/src/routes/[username]/[slug]/badges/leaderkey/+server.ts +++ b/src/routes/[username]/[slug]/badges/leaderkey/+server.ts @@ -2,7 +2,7 @@ import { getConfigBySlug } from '$lib/server/prisma/neovimconfigs/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={label_color}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; @@ -10,7 +10,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; - const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; const neovimConfig = await getConfigBySlug(username, slug); const url = BASE_URL.replaceAll('{repo-owner}', username) @@ -18,7 +18,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{label}', `leaderkey`) .replaceAll('{value}', neovimConfig.leaderkey) .replaceAll('{color}', color) - .replaceAll('{label_color}', label_color) + .replaceAll('{labelColor}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts b/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts index a28d6e02..8f893e56 100644 --- a/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts +++ b/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts @@ -2,7 +2,7 @@ import { prismaClient } from '$lib/server/prisma/client'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={label_color}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; @@ -10,7 +10,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; - const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; const pluginManagerInstallation = await prismaClient.neovimConfigPlugins.findFirst({ where: { @@ -33,7 +33,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{label}', `plugin manager`) .replaceAll('{value}', pluginManagerInstallation?.plugin?.name ?? 'unknown') .replaceAll('{color}', color) - .replaceAll('{label_color}', label_color) + .replaceAll('{labelColor}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/[username]/[slug]/badges/plugins/+server.ts b/src/routes/[username]/[slug]/badges/plugins/+server.ts index 26c525d0..3c41e5c2 100644 --- a/src/routes/[username]/[slug]/badges/plugins/+server.ts +++ b/src/routes/[username]/[slug]/badges/plugins/+server.ts @@ -2,7 +2,7 @@ import { getConfigBySlug } from '$lib/server/prisma/neovimconfigs/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={label_color}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; @@ -10,7 +10,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; - const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; const neovimConfig = await getConfigBySlug(username, slug); const pluginCount = neovimConfig.pluginCount; @@ -19,7 +19,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{label}', `plugins installed`) .replaceAll('{value}', pluginCount.toString()) .replaceAll('{color}', color) - .replaceAll('{label_color}', label_color) + .replaceAll('{labelColor}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts index ce25d251..815fc030 100644 --- a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts +++ b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts @@ -2,7 +2,7 @@ import { getPlugin } from '$lib/server/prisma/neovimplugins/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{plugin-usage}-{color}?logo=neovim&label=configs%20using%20{repo-name}&labelColor={label_color}&link=https://dotfyle.com/plugins/{repo-owner}/{repo-name}&style={style}'; + 'https://img.shields.io/badge/{plugin-usage}-{color}?logo=neovim&label=configs%20using%20{repo-name}&labelColor={labelColor}&link=https://dotfyle.com/plugins/{repo-owner}/{repo-name}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { owner, plugin: plugin } = event.params; @@ -10,7 +10,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; - const label_color = event.url.searchParams.get('label_color').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; const neovimPlugin = await getPlugin(owner, plugin); const usage = neovimPlugin.configCount; @@ -18,7 +18,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{repo-name}', plugin) .replaceAll('{plugin-usage}', usage.toString()) .replaceAll('{color}', color) - .replaceAll('{label_color}', label_color) + .replaceAll('{labelColor}', label_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ From 86c58d334f2f5574210d580fa8747acb22f96876 Mon Sep 17 00:00:00 2001 From: Makaze Date: Thu, 25 Apr 2024 22:58:38 -0400 Subject: [PATCH 4/4] Add logo color option --- src/routes/[username]/[slug]/badges/leaderkey/+server.ts | 4 +++- src/routes/[username]/[slug]/badges/plugin-manager/+server.ts | 4 +++- src/routes/[username]/[slug]/badges/plugins/+server.ts | 4 +++- src/routes/plugins/[owner]/[plugin]/shield/+server.ts | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/routes/[username]/[slug]/badges/leaderkey/+server.ts b/src/routes/[username]/[slug]/badges/leaderkey/+server.ts index 352fffc9..7aed1863 100644 --- a/src/routes/[username]/[slug]/badges/leaderkey/+server.ts +++ b/src/routes/[username]/[slug]/badges/leaderkey/+server.ts @@ -2,7 +2,7 @@ import { getConfigBySlug } from '$lib/server/prisma/neovimconfigs/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&logoColor={logoColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; @@ -11,6 +11,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const logo_color = event.url.searchParams.get('logoColor').replaceAll(/[^0-9a-z]/i, '') ?? ''; const neovimConfig = await getConfigBySlug(username, slug); const url = BASE_URL.replaceAll('{repo-owner}', username) @@ -19,6 +20,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{value}', neovimConfig.leaderkey) .replaceAll('{color}', color) .replaceAll('{labelColor}', label_color) + .replaceAll('{logoColor}', logo_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts b/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts index 8f893e56..b64f830a 100644 --- a/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts +++ b/src/routes/[username]/[slug]/badges/plugin-manager/+server.ts @@ -2,7 +2,7 @@ import { prismaClient } from '$lib/server/prisma/client'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&logoColor={logoColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; @@ -11,6 +11,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const logo_color = event.url.searchParams.get('logoColor').replaceAll(/[^0-9a-z]/i, '') ?? ''; const pluginManagerInstallation = await prismaClient.neovimConfigPlugins.findFirst({ where: { @@ -34,6 +35,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{value}', pluginManagerInstallation?.plugin?.name ?? 'unknown') .replaceAll('{color}', color) .replaceAll('{labelColor}', label_color) + .replaceAll('{logoColor}', logo_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/[username]/[slug]/badges/plugins/+server.ts b/src/routes/[username]/[slug]/badges/plugins/+server.ts index 3c41e5c2..128b6521 100644 --- a/src/routes/[username]/[slug]/badges/plugins/+server.ts +++ b/src/routes/[username]/[slug]/badges/plugins/+server.ts @@ -2,7 +2,7 @@ import { getConfigBySlug } from '$lib/server/prisma/neovimconfigs/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; + 'https://img.shields.io/badge/{value}-{color}?logo=neovim&label={label}&labelColor={labelColor}&logoColor={logoColor}&link=https://dotfyle.com/{repo-owner}/{repo-slug}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { username, slug } = event.params; @@ -11,6 +11,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const logo_color = event.url.searchParams.get('logoColor').replaceAll(/[^0-9a-z]/i, '') ?? ''; const neovimConfig = await getConfigBySlug(username, slug); const pluginCount = neovimConfig.pluginCount; @@ -20,6 +21,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{value}', pluginCount.toString()) .replaceAll('{color}', color) .replaceAll('{labelColor}', label_color) + .replaceAll('{logoColor}', logo_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({ diff --git a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts index 815fc030..04916b5c 100644 --- a/src/routes/plugins/[owner]/[plugin]/shield/+server.ts +++ b/src/routes/plugins/[owner]/[plugin]/shield/+server.ts @@ -2,7 +2,7 @@ import { getPlugin } from '$lib/server/prisma/neovimplugins/service'; import type { RequestEvent, RequestHandler } from './$types'; const BASE_URL = - 'https://img.shields.io/badge/{plugin-usage}-{color}?logo=neovim&label=configs%20using%20{repo-name}&labelColor={labelColor}&link=https://dotfyle.com/plugins/{repo-owner}/{repo-name}&style={style}'; + 'https://img.shields.io/badge/{plugin-usage}-{color}?logo=neovim&label=configs%20using%20{repo-name}&labelColor={labelColor}&logoColor={logoColor}&link=https://dotfyle.com/plugins/{repo-owner}/{repo-name}&style={style}'; export const GET: RequestHandler = async function (event: RequestEvent) { const { owner, plugin: plugin } = event.params; @@ -11,6 +11,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { // Add color support + sanitize input const color = event.url.searchParams.get('color').replaceAll(/[^0-9a-z]/i, '') ?? '22c55e'; const label_color = event.url.searchParams.get('labelColor').replaceAll(/[^0-9a-z]/i, '') ?? '1e40af'; + const logo_color = event.url.searchParams.get('logoColor').replaceAll(/[^0-9a-z]/i, '') ?? ''; const neovimPlugin = await getPlugin(owner, plugin); const usage = neovimPlugin.configCount; @@ -19,6 +20,7 @@ export const GET: RequestHandler = async function (event: RequestEvent) { .replaceAll('{plugin-usage}', usage.toString()) .replaceAll('{color}', color) .replaceAll('{labelColor}', label_color) + .replaceAll('{logoColor}', logo_color) .replaceAll('{style}', style); const res = await fetch(url).then((r) => r.text()); event.setHeaders({