url: return host instead of bool for success

This commit is contained in:
dumbmoron 2023-12-14 22:51:24 +00:00
parent 3056624b3d
commit 662360509c
No known key found for this signature in database
GPG key ID: C59997C76C6A8E5F
2 changed files with 9 additions and 10 deletions

View file

@ -4,13 +4,14 @@ import { apiJSON } from "./sub/utils.js";
import { errorUnsupported } from "./sub/errors.js";
import loc from "../localization/manager.js";
import match from "./processing/match.js";
import { hasValidHostname, normalizeURL } from "./processing/url.js";
import { getHostIfValid, normalizeURL } from "./processing/url.js";
export async function getJSON(originalURL, lang, obj) {
try {
const url = normalizeURL(decodeURIComponent(originalURL));
const host = getHostIfValid(url);
if (!hasValidHostname(url) || !services[host].enabled) {
if (!host || !services[host].enabled) {
return apiJSON(0, { t: errorUnsupported(lang) });
}

View file

@ -84,19 +84,17 @@ export function normalizeURL(url) {
);
}
export function hasValidHostname(url) {
export function getHostIfValid(url) {
const host = psl.parse(url.hostname);
if (host.error) return false;
if (host.error) return;
const service = services[host.sld];
if (!service) return false;
if ((service.tld ?? 'com') !== host.tld) return false;
if (!service) return;
if ((service.tld ?? 'com') !== host.tld) return;
const anySubdomainAllowed = service.subdomains === '*';
const validSubdomain = [null, 'www', ...(service.subdomains ?? [])].includes(host.subdomain);
if (!validSubdomain && !anySubdomainAllowed)
return false;
if (!validSubdomain && !anySubdomainAllowed) return;
return true;
return host.sld;
}