Skip to content

Instantly share code, notes, and snippets.

@haynesgt
Last active January 4, 2021 23:28
Show Gist options
  • Save haynesgt/e73ef586477e104c8deb7000f1790524 to your computer and use it in GitHub Desktop.
Save haynesgt/e73ef586477e104c8deb7000f1790524 to your computer and use it in GitHub Desktop.
Node prompt for value via form
const http = require("http");
const url = require("url");
const open = (() => {
try { return require("open"); } catch (e) { }
})();
function webPrompt(prompt = "Value", type = "text") {
return new Promise((resolve, reject) => {
const server = http.createServer((req, res) => {
if (req.method === "GET") {
const reqUrl = url.parse(req.url,true);
const reqQuery = reqUrl.query;
const value = reqQuery.value;
if (value !== undefined) {
resolve(value);
res.end("<!DOCTYPE html>Your response has been submitted. Thank you.");
server.close();
} else {
res.setHeader("Content-Type", "text/html");
res.end(`<!DOCTYPE html>
<form>
<label>${prompt}</label><br>
<input type="${type}" name="value"/><br>
<input type="submit"/>
</form>`);
}
} else {
res.statusCode = 404;
res.end();
}
});
server.listen(() => {
const {address: hostname, port} = server.address();
const serverUrl = url.format({protocol: "http:", hostname, port});
console.log(`Please fill out the form at ${serverUrl}`);
if (open) open(serverUrl);
});
});
};
module.exports = webPrompt;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment