Test embeding image/png etc responses
This commit is contained in:
parent
9a3286b605
commit
2ef970a2f0
@ -59,7 +59,7 @@ export async function handleMessage(opts: MessageOptions): Promise<Message> {
|
||||
});
|
||||
|
||||
if (message.content && message.content.length > Config.get().limits.message.maxCharacters) {
|
||||
throw new HTTPError("Content length over max character limit")
|
||||
throw new HTTPError("Content length over max character limit");
|
||||
}
|
||||
|
||||
if (opts.author_id) {
|
||||
@ -152,6 +152,8 @@ export async function postHandleMessage(message: Message) {
|
||||
|
||||
links = links.slice(0, 20); // embed max 20 links — TODO: make this configurable with instance policies
|
||||
|
||||
const { endpointPublic, resizeWidthMax, resizeHeightMax } = Config.get().cdn;
|
||||
|
||||
for (const link of links) {
|
||||
try {
|
||||
const request = await fetch(link, {
|
||||
@ -159,6 +161,26 @@ export async function postHandleMessage(message: Message) {
|
||||
size: Config.get().limits.message.maxEmbedDownloadSize,
|
||||
});
|
||||
|
||||
let embed: Embed;
|
||||
|
||||
const type = request.headers.get("content-type");
|
||||
if (type?.indexOf("image") == 0) {
|
||||
embed = {
|
||||
provider: {
|
||||
url: link,
|
||||
name: new URL(link).hostname,
|
||||
},
|
||||
image: {
|
||||
// can't be bothered rn
|
||||
proxy_url: `${endpointPublic}/external/resize/${encodeURIComponent(link)}?width=500&height=400`,
|
||||
url: link,
|
||||
width: 500,
|
||||
height: 400
|
||||
}
|
||||
};
|
||||
data.embeds.push(embed);
|
||||
}
|
||||
else {
|
||||
const text = await request.text();
|
||||
const $ = cheerio.load(text);
|
||||
|
||||
@ -173,14 +195,13 @@ export async function postHandleMessage(message: Message) {
|
||||
|
||||
const url = $('meta[property="og:url"]').attr("content");
|
||||
// TODO: color
|
||||
const embed: Embed = {
|
||||
embed = {
|
||||
provider: {
|
||||
url: link,
|
||||
name: provider_name
|
||||
}
|
||||
};
|
||||
|
||||
const { endpointPublic, resizeWidthMax, resizeHeightMax } = Config.get().cdn;
|
||||
const resizeWidth = Math.min(resizeWidthMax ?? 1, width ?? 100);
|
||||
const resizeHeight = Math.min(resizeHeightMax ?? 1, height ?? 100);
|
||||
if (author_name) embed.author = { name: author_name };
|
||||
@ -197,6 +218,7 @@ export async function postHandleMessage(message: Message) {
|
||||
if (title || description) {
|
||||
data.embeds.push(embed);
|
||||
}
|
||||
}
|
||||
} catch (error) { }
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,8 @@
|
||||
"target": "ES6" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
|
||||
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
|
||||
"lib": [
|
||||
"ES2021"
|
||||
"ES2021",
|
||||
"DOM"
|
||||
] /* Specify library files to be included in the compilation. */,
|
||||
"allowJs": true /* Allow javascript files to be compiled. */,
|
||||
"checkJs": true /* Report errors in .js files. */,
|
||||
|
Loading…
x
Reference in New Issue
Block a user