diff --git a/api/services/jsorg/[query].ts b/api/services/jsorg/[query].ts new file mode 100644 index 0000000..3a53ebf --- /dev/null +++ b/api/services/jsorg/[query].ts @@ -0,0 +1,32 @@ +import { send, sendError, fetch } from '../../../util/http'; +import { NowRequest, NowResponse } from '@vercel/node'; + +export default async function handler( + req: NowRequest, + res: NowResponse +): Promise { + const { query } = req.query; + + if (!query || typeof query !== 'string') { + return sendError(res, new Error('No query given')); + } + + if (!/([a-zA-Z0-9_-])\.js\.org/.test(query)) { + return sendError(res, new Error('Invalid format')); + } + + try { + // Get js.org domain data from js.org.json repo + const domains = await fetch( + `https://raw.githubusercontent.com/raikasdev/js.org.json/master/output/subdomains_registered.min.json`, + 'GET' + ).then((res) => res.json()); + if (domains.includes(query)) { + send(res, { availability: false }); + } else { + send(res, { availability: true }); + } + } catch (err) { + sendError(res, err); + } +} diff --git a/src/components/cards/providers/JsOrg.tsx b/src/components/cards/providers/JsOrg.tsx index 6ee2986..ec74d23 100644 --- a/src/components/cards/providers/JsOrg.tsx +++ b/src/components/cards/providers/JsOrg.tsx @@ -20,7 +20,7 @@ const JsOrgCard: React.FC<{ query: string }> = ({ query }) => { {(name) => (