api/url: add function for resolving shortlinks
motivation: we frequently need to resolve shortlinks to full URLs let's have a common standard function for doing this safely instead of reinventing the wheel in every single service module
This commit is contained in:
@@ -4,6 +4,7 @@ import { strict as assert } from "node:assert";
|
||||
import { env } from "../config.js";
|
||||
import { services } from "./service-config.js";
|
||||
import { friendlyServiceName } from "./service-alias.js";
|
||||
import { getRedirectingURL } from "../misc/utils.js";
|
||||
|
||||
function aliasURL(url) {
|
||||
assert(url instanceof URL);
|
||||
@@ -221,3 +222,17 @@ export function extract(url) {
|
||||
|
||||
return { host, patternMatch };
|
||||
}
|
||||
|
||||
export async function resolveRedirectingURL(url, dispatcher, userAgent) {
|
||||
const originalService = getHostIfValid(normalizeURL(url));
|
||||
if (!originalService) return;
|
||||
|
||||
const canonicalURL = await getRedirectingURL(url, dispatcher, userAgent);
|
||||
if (!canonicalURL) return;
|
||||
|
||||
const { host, patternMatch } = extract(normalizeURL(canonicalURL));
|
||||
|
||||
if (host === originalService) {
|
||||
return patternMatch;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user