summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-10-02 22:25:47 +1100
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-10-02 22:25:47 +1100
commit5b463ee15629c8a8b14f7b7019f5c141d2de5c85 (patch)
tree28829bf4d82816e7e6f54504cd6da377e9a51673 /src
parentUse imagor for image resizing (diff)
downloadserver-5b463ee15629c8a8b14f7b7019f5c141d2de5c85.tar.xz
Make imagor optional
Diffstat (limited to 'src')
-rw-r--r--src/api/util/utility/EmbedHandlers.ts27
-rw-r--r--src/util/entities/Config.ts2
2 files changed, 17 insertions, 12 deletions
diff --git a/src/api/util/utility/EmbedHandlers.ts b/src/api/util/utility/EmbedHandlers.ts
index db73dcdc..65fecd4d 100644
--- a/src/api/util/utility/EmbedHandlers.ts
+++ b/src/api/util/utility/EmbedHandlers.ts
@@ -17,22 +17,25 @@ export const DEFAULT_FETCH_OPTIONS: any = {
 };
 
 export const getProxyUrl = (url: URL, width: number, height: number) => {
-	const { endpointPublic, resizeWidthMax, resizeHeightMax } = Config.get().cdn;
+	const { endpointPublic, resizeWidthMax, resizeHeightMax, imagorServerUrl } = Config.get().cdn;
 	const secret = Config.get().security.jwtSecret;	// maybe shouldn't use this?
 	width = Math.min(width || 500, resizeWidthMax || width);
 	height = Math.min(height || 500, resizeHeightMax || width);
 
-	let path = `${width}x${height}/${url.host}${url.pathname}`
-	
-	const hash = crypto.createHmac('sha1', secret)
-	.update(path)
-	.digest('base64')
-	.replace(/\+/g, '-').replace(/\//g, '_');
-	
-	// TODO: make configurable
-	return `https://media.understars.dev/${hash}/${path}`;
-
-	// return `${endpointPublic}/external/resize/${encodeURIComponent(url.href)}?width=${width}&height=${height}`;
+	// Imagor
+	if (imagorServerUrl) {
+		let path = `${width}x${height}/${url.host}${url.pathname}`;
+
+		const hash = crypto.createHmac('sha1', secret)
+			.update(path)
+			.digest('base64')
+			.replace(/\+/g, '-').replace(/\//g, '_');
+
+		return `${imagorServerUrl}/${hash}/${path}`;
+	}
+
+	// Fosscord CDN resizer
+	return `${endpointPublic}/external/resize/${encodeURIComponent(url.href)}?width=${width}&height=${height}`;
 };
 
 const getMeta = ($: cheerio.CheerioAPI, name: string): string | undefined => {
diff --git a/src/util/entities/Config.ts b/src/util/entities/Config.ts
index cd7a6923..42006fc9 100644
--- a/src/util/entities/Config.ts
+++ b/src/util/entities/Config.ts
@@ -52,6 +52,7 @@ export interface ConfigValue {
 		endpointPrivate: string | null;
 		resizeHeightMax: number | null;
 		resizeWidthMax: number | null;
+		imagorServerUrl: string | null;
 	};
 	api: {
 		defaultVersion: string;
@@ -222,6 +223,7 @@ export const DefaultConfigOptions: ConfigValue = {
 		endpointPublic: null,
 		resizeHeightMax: 1000,
 		resizeWidthMax: 1000,
+		imagorServerUrl: null,
 	},
 	api: {
 		defaultVersion: "9",