Respect proxies when fetching link previews

This commit is contained in:
Evan Hahn 2021-10-14 17:49:36 -05:00 committed by GitHub
parent 1f4d01f21a
commit 92f7259272
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 3 deletions

View file

@ -54,7 +54,7 @@ const MAX_DATE = new Date(3000, 0, 1).valueOf();
const emptyContentType = { type: null, charset: null };
type FetchFn = (href: string, init: RequestInit) => Promise<Response>;
export type FetchFn = (href: string, init: RequestInit) => Promise<Response>;
export type LinkPreviewMetadata = {
title: string;

View file

@ -999,6 +999,14 @@ export function initialize({
socketManager.authenticate({ username, password });
}
let fetchForLinkPreviews: linkPreviewFetch.FetchFn;
if (proxyUrl) {
const agent = new ProxyAgent(proxyUrl);
fetchForLinkPreviews = (href, init) => fetch(href, { ...init, agent });
} else {
fetchForLinkPreviews = fetch;
}
// Thanks, function hoisting!
return {
getSocketStatus,
@ -1968,7 +1976,7 @@ export function initialize({
abortSignal: AbortSignal
) {
return linkPreviewFetch.fetchLinkPreviewMetadata(
fetch,
fetchForLinkPreviews,
href,
abortSignal
);
@ -1978,7 +1986,11 @@ export function initialize({
href: string,
abortSignal: AbortSignal
) {
return linkPreviewFetch.fetchLinkPreviewImage(fetch, href, abortSignal);
return linkPreviewFetch.fetchLinkPreviewImage(
fetchForLinkPreviews,
href,
abortSignal
);
}
async function makeProxiedRequest(