diff --git a/src/api/middlewares/ImageProxy.ts b/src/api/middlewares/ImageProxy.ts
index 814f0e6d..d87a8de9 100644
--- a/src/api/middlewares/ImageProxy.ts
+++ b/src/api/middlewares/ImageProxy.ts
@@ -20,7 +20,6 @@ import { Config, JimpType } from "@spacebar/util";
import { Request, Response } from "express";
import { yellow } from "picocolors";
import crypto from "crypto";
-import fetch from "node-fetch-commonjs";
let sharp: undefined | false | { default: typeof import("sharp") } = undefined;
diff --git a/src/api/routes/channels/#channel_id/attachments.ts b/src/api/routes/channels/#channel_id/attachments.ts
index 2c08931e..4699fe40 100644
--- a/src/api/routes/channels/#channel_id/attachments.ts
+++ b/src/api/routes/channels/#channel_id/attachments.ts
@@ -25,7 +25,6 @@ import {
} from "@spacebar/util";
import { Request, Response, Router } from "express";
import { CloudAttachment } from "@spacebar/util";
-import fetch from "node-fetch-commonjs";
import { UploadAttachmentRequestSchema, UploadAttachmentResponseSchema } from "@spacebar/schemas"
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/gifs/search.ts b/src/api/routes/gifs/search.ts
index 378e3981..199d43da 100644
--- a/src/api/routes/gifs/search.ts
+++ b/src/api/routes/gifs/search.ts
@@ -22,8 +22,6 @@ import {
parseGifResult,
} from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch-commonjs";
-import { ProxyAgent } from "proxy-agent";
import http from "http";
import { TenorGif, TenorMediaTypes } from "@spacebar/schemas"
@@ -62,12 +60,9 @@ router.get(
const apiKey = getGifApiKey();
- const agent = new ProxyAgent();
-
const response = await fetch(
`https://g.tenor.com/v1/search?q=${q}&media_format=${media_format}&locale=${locale}&key=${apiKey}`,
{
- agent: agent as http.Agent,
method: "get",
headers: { "Content-Type": "application/json" },
},
diff --git a/src/api/routes/gifs/trending-gifs.ts b/src/api/routes/gifs/trending-gifs.ts
index 48c2a3bf..8de10650 100644
--- a/src/api/routes/gifs/trending-gifs.ts
+++ b/src/api/routes/gifs/trending-gifs.ts
@@ -22,9 +22,6 @@ import {
parseGifResult,
} from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch-commonjs";
-import { ProxyAgent } from "proxy-agent";
-import http from "http";
import { TenorGif, TenorMediaTypes } from "@spacebar/schemas"
const router = Router({ mergeParams: true });
@@ -57,12 +54,9 @@ router.get(
const apiKey = getGifApiKey();
- const agent = new ProxyAgent();
-
const response = await fetch(
`https://g.tenor.com/v1/trending?media_format=${media_format}&locale=${locale}&key=${apiKey}`,
{
- agent: agent as http.Agent,
method: "get",
headers: { "Content-Type": "application/json" },
},
diff --git a/src/api/routes/gifs/trending.ts b/src/api/routes/gifs/trending.ts
index bcbd450d..59314afb 100644
--- a/src/api/routes/gifs/trending.ts
+++ b/src/api/routes/gifs/trending.ts
@@ -22,9 +22,6 @@ import {
parseGifResult,
} from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch-commonjs";
-import { ProxyAgent } from "proxy-agent";
-import http from "http";
import { TenorCategoriesResults, TenorTrendingResults } from "@spacebar/schemas"
const router = Router({ mergeParams: true });
@@ -52,13 +49,10 @@ router.get(
const apiKey = getGifApiKey();
- const agent = new ProxyAgent();
-
const [responseSource, trendGifSource] = await Promise.all([
fetch(
`https://g.tenor.com/v1/categories?locale=${locale}&key=${apiKey}`,
{
- agent: agent as http.Agent,
method: "get",
headers: { "Content-Type": "application/json" },
},
@@ -66,7 +60,6 @@ router.get(
fetch(
`https://g.tenor.com/v1/trending?locale=${locale}&key=${apiKey}`,
{
- agent: agent as http.Agent,
method: "get",
headers: { "Content-Type": "application/json" },
},
diff --git a/src/api/routes/guilds/templates/index.ts b/src/api/routes/guilds/templates/index.ts
index 7937e983..d5950a46 100644
--- a/src/api/routes/guilds/templates/index.ts
+++ b/src/api/routes/guilds/templates/index.ts
@@ -19,7 +19,6 @@
import { route } from "@spacebar/api";
import { Config, DiscordApiErrors, Guild, Member, Template } from "@spacebar/util";
import { Request, Response, Router } from "express";
-import fetch from "node-fetch-commonjs";
import { HTTPError } from "lambert-server";
import { GuildTemplateCreateSchema } from "@spacebar/schemas"
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<Message> {
}
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: "",
diff --git a/src/util/util/AutoUpdate.ts b/src/util/util/AutoUpdate.ts
index e62a5c50..efd0954e 100644
--- a/src/util/util/AutoUpdate.ts
+++ b/src/util/util/AutoUpdate.ts
@@ -16,12 +16,9 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-import fetch from "node-fetch-commonjs";
-import { ProxyAgent } from "proxy-agent";
import readline from "readline";
import fs from "fs/promises";
import path from "path";
-import http from "http";
const rl = readline.createInterface({
input: process.stdin,
@@ -74,9 +71,8 @@ async function download(url: string, dir: string) {
try {
// TODO: use file stream instead of buffer (to prevent crash because of high memory usage for big files)
// TODO check file hash
- const agent = new ProxyAgent();
- const response = await fetch(url, { agent: agent as http.Agent });
- const buffer = await response.buffer();
+ const response = await fetch(url);
+ const buffer = await response.bytes();
const tempDir = await fs.mkdtemp("spacebar");
await fs.writeFile(path.join(tempDir, "Spacebar.zip"), buffer);
} catch (error) {
@@ -97,8 +93,7 @@ async function getCurrentVersion(dir: string) {
async function getLatestVersion(url: string) {
try {
- const agent = new ProxyAgent();
- const response = await fetch(url, { agent: agent as http.Agent });
+ const response = await fetch(url);
const content = (await response.json()) as { version: string };
return content.version;
} catch (error) {
diff --git a/src/util/util/cdn.ts b/src/util/util/cdn.ts
index d5ca9ba9..01f03fc1 100644
--- a/src/util/util/cdn.ts
+++ b/src/util/util/cdn.ts
@@ -18,7 +18,6 @@
import FormData from "form-data";
import { HTTPError } from "lambert-server";
-import fetch from "node-fetch-commonjs";
import { Attachment } from "../entities";
import { Config } from "./Config";
|