kill-the-newsletter/src/server.tsx

44 lines
781 B
TypeScript
Raw Normal View History

2020-03-18 04:07:48 +01:00
import express from "express";
import React from "react";
2020-03-18 18:38:09 +01:00
import {
Inbox,
Layout,
Form,
Created,
Feed,
newToken,
2020-03-18 20:21:44 +01:00
feedPath,
renderHtml,
renderXml
2020-03-18 18:38:09 +01:00
} from "./components";
2020-03-18 17:22:18 +01:00
import fs from "fs";
2020-03-18 04:07:48 +01:00
2020-03-19 01:16:00 +01:00
const webApp = express();
2020-03-18 04:07:48 +01:00
2020-03-19 01:16:00 +01:00
webApp.use(express.static("static"));
webApp.use(express.urlencoded({ extended: true }));
2020-03-18 04:07:48 +01:00
2020-03-19 01:16:00 +01:00
webApp.get("/", (req, res) =>
2020-03-18 05:49:41 +01:00
res.send(
2020-03-18 20:21:44 +01:00
renderHtml(
2020-03-18 16:12:46 +01:00
<Layout>
<Form></Form>
</Layout>
)
2020-03-18 05:49:41 +01:00
)
2020-03-18 04:07:48 +01:00
);
2020-03-19 01:16:00 +01:00
webApp.post("/", (req, res) => {
2020-03-18 18:38:09 +01:00
const inbox: Inbox = { name: req.body.name, token: newToken() };
2020-03-18 20:21:44 +01:00
fs.writeFileSync(feedPath(inbox.token), renderXml(Feed(inbox)));
2020-03-18 17:22:18 +01:00
res.send(
2020-03-18 20:21:44 +01:00
renderHtml(
2020-03-18 17:22:18 +01:00
<Layout>
2020-03-18 18:38:09 +01:00
<Created inbox={inbox}></Created>
2020-03-18 17:22:18 +01:00
</Layout>
)
);
});
2020-03-19 01:16:00 +01:00
export const webServer = webApp.listen(8443);