From 25f7c0de5da70095040c6a5c33b5e6f1e0cdaf08 Mon Sep 17 00:00:00 2001 From: Rory& Date: Mon, 1 Dec 2025 20:19:14 +0100 Subject: Drop node-fetch-commonjs, proxy-agent as deprecated --- src/api/util/handlers/Message.ts | 3 +-- src/api/util/utility/EmbedHandlers.ts | 13 ++++++++----- src/api/util/utility/captcha.ts | 1 - src/api/util/utility/ipAddress.ts | 1 - 4 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/api/util') diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts index fd163014..828576ab 100644 --- a/src/api/util/handlers/Message.ts +++ b/src/api/util/handlers/Message.ts @@ -50,7 +50,6 @@ import { } from "@spacebar/util"; import { HTTPError } from "lambert-server"; import { In, Or, Equal, IsNull } from "typeorm"; -import fetch from "node-fetch-commonjs"; import { ChannelType, Embed, EmbedType, MessageCreateAttachment, MessageCreateCloudAttachment, MessageCreateSchema, MessageType, Reaction } from "@spacebar/schemas"; const allow_empty = false; // TODO: check webhook, application, system author, stickers @@ -206,7 +205,7 @@ export async function handleMessage(opts: MessageOptions): Promise { } if (opts.avatar_url) { const avatarData = await fetch(opts.avatar_url); - const base64 = await avatarData.buffer().then((x) => x.toString("base64")); + const base64 = await avatarData.text().then((x) => btoa(x)); const dataUri = "data:" + avatarData.headers.get("content-type") + ";base64," + base64; diff --git a/src/api/util/utility/EmbedHandlers.ts b/src/api/util/utility/EmbedHandlers.ts index f93df3e2..96fbe1c9 100644 --- a/src/api/util/utility/EmbedHandlers.ts +++ b/src/api/util/utility/EmbedHandlers.ts @@ -20,19 +20,16 @@ import { Config }from "@spacebar/util"; import { Embed, EmbedImage, EmbedType } from "@spacebar/schemas"; import * as cheerio from "cheerio"; import crypto from "crypto"; -import fetch, { RequestInit } from "node-fetch-commonjs"; import { yellow } from "picocolors"; import probe from "probe-image-size"; export const DEFAULT_FETCH_OPTIONS: RequestInit = { redirect: "follow", - follow: 1, headers: { "user-agent": "Mozilla/5.0 (compatible; Spacebar/1.0; +https://github.com/spacebarchat/server)", }, // size: 1024 * 1024 * 5, // grabbed from config later - compress: true, method: "GET", }; @@ -130,10 +127,16 @@ export const getMetaDescriptions = (text: string) => { const doFetch = async (url: URL) => { try { - return await fetch(url, { + const res = await fetch(url, { ...DEFAULT_FETCH_OPTIONS, - size: Config.get().limits.message.maxEmbedDownloadSize, }); + if (res.headers.get("content-length")) { + const contentLength = parseInt(res.headers.get("content-length")!); + if (Config.get().limits.message.maxEmbedDownloadSize && contentLength > Config.get().limits.message.maxEmbedDownloadSize) { + return null; + } + } + return res; } catch (e) { return null; } diff --git a/src/api/util/utility/captcha.ts b/src/api/util/utility/captcha.ts index 3c0ac766..3f654a48 100644 --- a/src/api/util/utility/captcha.ts +++ b/src/api/util/utility/captcha.ts @@ -17,7 +17,6 @@ */ import { Config } from "@spacebar/util"; -import fetch from "node-fetch-commonjs"; export interface hcaptchaResponse { success: boolean; diff --git a/src/api/util/utility/ipAddress.ts b/src/api/util/utility/ipAddress.ts index c19c7c35..2609dae1 100644 --- a/src/api/util/utility/ipAddress.ts +++ b/src/api/util/utility/ipAddress.ts @@ -19,7 +19,6 @@ import { Config } from "@spacebar/util"; import { Request } from "express"; // use ipdata package instead of simple fetch because of integrated caching -import fetch from "node-fetch-commonjs"; const exampleData = { ip: "", -- cgit 1.5.1