@mikkel-ol/tunnelmole
Version:
Tunnelmole, an open source ngrok alternative. Instant public URLs for any http/https based application. Available as a command line application or as an NPM dependency for your code. Stable and maintained. Good test coverage. Works behind firewalls
53 lines (42 loc) • 1.36 kB
text/typescript
import fetch from "node-fetch";
import config from "../../config.js";
import { getApiKey } from "../identity/api-key-service.js";
interface UnReserveDomainRequest {
apiKey: string;
subdomain: string;
}
const unreserveDomain = async function (subdomain: string): Promise<void> {
subdomain = subdomain.replace(".tunnelmole.net", "");
subdomain = subdomain.replace(".tunnelmole.com", "");
const unreserveDomainEndpoint = `${config.hostip.httpEndpoint}/tunnelmole/unreserve-subdomain`;
const apiKey = await getApiKey();
if (apiKey === undefined) {
console.error(
"Subdomains are linked to API Keys, so to reserve and unreserve domains you need to set your API key with --set-api-key",
);
return Promise.resolve();
}
const data: UnReserveDomainRequest = {
apiKey,
subdomain,
};
try {
await fetch(unreserveDomainEndpoint, {
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
} catch (error) {
console.error(
`There was an error while trying to unreserve the subdomain ${subdomain}, see below`,
);
console.error(error);
}
console.info(
`If the subdomain ${subdomain} exists and it belongs to your API key, it has been unreserved`,
);
return Promise.resolve();
};
export { unreserveDomain };