feedless/app/lib/express.js

46 lines
1.0 KiB
JavaScript
Raw Normal View History

2020-04-04 15:32:27 +02:00
const express = require("express");
const app = express();
const port = 3000;
2020-04-04 16:01:11 +02:00
const bodyParser = require("body-parser");
const pull = require("pull-stream");
const Client = require("ssb-client");
2020-04-04 15:32:27 +02:00
2020-04-04 16:01:11 +02:00
let ssbServer;
let ssbKeys;
Client((err, server) => {
if (err) throw err;
ssbServer = server;
ssbServer.whoami((err, keys) => {
if (err) throw err;
ssbKeys = keys;
});
});
2020-04-04 15:32:27 +02:00
2020-04-04 16:01:11 +02:00
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.set("view engine", "ejs");
2020-04-04 15:32:27 +02:00
app.use(express.static("public"));
app.get("/", (_req, res) => {
2020-04-04 16:01:11 +02:00
pull(
ssbServer.createFeedStream(),
pull.collect((err, msgs) => {
const posts = msgs.map((x) => x.value.content);
res.render("index", { posts, profile: ssbKeys });
})
);
2020-04-04 15:32:27 +02:00
});
app.post("/publish", (req, res) => {
2020-04-04 16:01:11 +02:00
ssbServer.publish({ type: "post", text: req.body.message }, (err, msg) => {
res.redirect("/");
});
2020-04-04 15:32:27 +02:00
});
2020-04-04 16:01:11 +02:00
const expressServer = app.listen(port, () =>
2020-04-04 15:32:27 +02:00
console.log(`Example app listening at http://localhost:${port}`)
);
2020-04-04 16:01:11 +02:00
module.exports = expressServer;