parent
b7a858823c
commit
a1b0374cec
4 changed files with 54 additions and 2 deletions
@ -0,0 +1,17 @@ |
||||
export async function getRoadCard( |
||||
version: 'tall' | 'wide', |
||||
userId: string, |
||||
variant: 'dark' | 'light', |
||||
roadmaps: string = '', |
||||
) { |
||||
const url = new URL( |
||||
`${import.meta.env.PUBLIC_API_URL}/v1-badge/${version}/${userId}`, |
||||
); |
||||
url.searchParams.set('variant', variant); |
||||
if (roadmaps) { |
||||
url.searchParams.set('roadmaps', roadmaps); |
||||
} |
||||
|
||||
const response = await fetch(url.toString()); |
||||
return response.text(); |
||||
} |
@ -0,0 +1,34 @@ |
||||
import type { APIRoute } from 'astro'; |
||||
import { getDefaultOpenGraphImageBuffer } from '../../../lib/open-graph'; |
||||
import { getRoadCard } from '../../../lib/road-card'; |
||||
|
||||
export const prerender = false; |
||||
|
||||
type Params = { |
||||
version: 'tall' | 'wide'; |
||||
userId: string; |
||||
}; |
||||
|
||||
export const GET: APIRoute<any, Params> = async (context) => { |
||||
const { userId, version } = context.params; |
||||
|
||||
if (!userId || !version) { |
||||
const buffer = await getDefaultOpenGraphImageBuffer(); |
||||
return new Response(buffer, { |
||||
headers: { |
||||
'Content-Type': 'image/png', |
||||
}, |
||||
}); |
||||
} |
||||
|
||||
const searchParams = new URLSearchParams(context.url.searchParams); |
||||
const variant = (searchParams.get('variant') as 'dark' | 'light') || 'dark'; |
||||
const roadmaps = searchParams.get('roadmaps') || ''; |
||||
|
||||
const svg = await getRoadCard(version, userId, variant, roadmaps); |
||||
return new Response(svg, { |
||||
headers: { |
||||
'Content-Type': 'image/svg+xml', |
||||
}, |
||||
}); |
||||
}; |
Loading…
Reference in new issue