40 lines
938 B
TypeScript
40 lines
938 B
TypeScript
import type {
|
|
WhoIsResponse,
|
|
WhoIsData,
|
|
WhoIsEvent,
|
|
WhoIsIpAddresses,
|
|
} from "@/types";
|
|
|
|
function checkEvents(events: WhoIsEvent[]): boolean {
|
|
for (const event of events) {
|
|
if (event.eventAction === "registration" && event.eventDate === "") {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
function checkIpAddresses(ipAddresses: WhoIsIpAddresses): boolean {
|
|
return ipAddresses.v4.length === 0 && ipAddresses.v6.length === 0;
|
|
}
|
|
|
|
function checkWhoIsData(data: WhoIsData): boolean {
|
|
return (
|
|
checkEvents(data.events) &&
|
|
checkIpAddresses(data.ipAddresses) &&
|
|
data.nameservers.length === 0
|
|
);
|
|
}
|
|
|
|
export async function isDomainAvailable(domain: string): Promise<boolean> {
|
|
try {
|
|
const response = await fetch(
|
|
`https://whois.klemek.fr/api/lookup/${domain}`,
|
|
);
|
|
const content: WhoIsResponse = await response.json();
|
|
return checkWhoIsData(content.data);
|
|
} catch {
|
|
return false;
|
|
}
|
|
}
|