Add code snippet for ICS-generation.
This commit is contained in:
56
index.js
Normal file
56
index.js
Normal file
@@ -0,0 +1,56 @@
|
||||
const express = require("express");
|
||||
const fs = require("fs");
|
||||
const ics = require("ics");
|
||||
const marked = require("marked");
|
||||
|
||||
// Define defaults of HTTP port/host, can be redefined by environment variables.
|
||||
const HTTP_PORT = process.env.HTTP_PORT || 8080;
|
||||
const HTTP_HOST = process.env.HTTP_HOST || "localhost";
|
||||
const README_FILE = "README.md";
|
||||
|
||||
// Init the Express application instance.
|
||||
const app = express();
|
||||
|
||||
// Just show `README.md` file as a main page.
|
||||
app.get("/", (req, res) => {
|
||||
fs.readFile(README_FILE, { encoding: "utf8" }, (error, file) => {
|
||||
if (error) {
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
return;
|
||||
}
|
||||
const html = marked.marked(file);
|
||||
res.send(html);
|
||||
});
|
||||
});
|
||||
|
||||
// Generate ICS-file example tuned with URL query parameters.
|
||||
app.get("/generate-event", function (req, res) {
|
||||
// Load event template from the file.
|
||||
const eventTemplate = require("./eventTemplate");
|
||||
let event = JSON.parse(JSON.stringify(eventTemplate.eventTemplate));
|
||||
event.description = req.query.description;
|
||||
ics.createEvent(event, (error, iCalEventText) => {
|
||||
if (error) {
|
||||
console.error(error);
|
||||
return;
|
||||
}
|
||||
|
||||
// Response as a file if required.
|
||||
if (req.query.output === "file") {
|
||||
res.set({
|
||||
"Content-Type": "text/calendar",
|
||||
"Content-Disposition": "inline;filename=calendar.ics",
|
||||
});
|
||||
} else {
|
||||
res.set({
|
||||
"Content-Type": "text/plain",
|
||||
});
|
||||
}
|
||||
res.send(iCalEventText);
|
||||
});
|
||||
});
|
||||
|
||||
// Starting a HTTP server.
|
||||
console.log(`Server is running on http://${HTTP_HOST}:${HTTP_PORT}...`);
|
||||
app.listen(HTTP_PORT);
|
||||
Reference in New Issue
Block a user