feat(profile): show real telegram avatars in messenger chips
This commit is contained in:
32
server/api/messenger-avatar/[connectionId].get.ts
Normal file
32
server/api/messenger-avatar/[connectionId].get.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const config = useRuntimeConfig(event);
|
||||
const backendUrl = new URL(config.backendGraphqlUrl);
|
||||
const connectionId = getRouterParam(event, 'connectionId');
|
||||
|
||||
if (!connectionId) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: 'Connection id is required.',
|
||||
});
|
||||
}
|
||||
|
||||
const response = await fetch(`${backendUrl.origin}/messenger/avatar/${encodeURIComponent(connectionId)}`, {
|
||||
headers: {
|
||||
...(getHeader(event, 'cookie') ? { cookie: getHeader(event, 'cookie') as string } : {}),
|
||||
...(getHeader(event, 'authorization') ? { authorization: getHeader(event, 'authorization') as string } : {}),
|
||||
},
|
||||
});
|
||||
|
||||
if (!response.ok || !response.body) {
|
||||
throw createError({
|
||||
statusCode: response.status,
|
||||
statusMessage: 'Messenger avatar is not available.',
|
||||
});
|
||||
}
|
||||
|
||||
setResponseStatus(event, response.status);
|
||||
setHeader(event, 'content-type', response.headers.get('content-type') || 'image/jpeg');
|
||||
setHeader(event, 'cache-control', response.headers.get('cache-control') || 'private, max-age=300');
|
||||
|
||||
return Buffer.from(await response.arrayBuffer());
|
||||
});
|
||||
Reference in New Issue
Block a user