Browse Source

Add source code link, basic input validation, and monospace error display

master
Sven Slootweg 2 years ago
parent
commit
6c43050a8c
  1. 14
      index.js
  2. 3
      package.json
  3. 5
      public/style.css
  4. 4
      views/error.jsx
  5. 1
      views/layout.jsx

14
index.js

@ -9,6 +9,7 @@ const url = require("url");
const autodiscoverClientConfiguration = require("@modular-matrix/autodiscover-client-configuration");
const bhttp = require("bhttp");
const createError = require("create-error");
const { ValidationError, validateValue, required, isString } = require("validatem");
let UpstreamError = createError("UpstreamError");
@ -34,6 +35,17 @@ router.get("/", (req, res) => {
});
router.get("/show-rooms", (req, res) => {
validateValue(req.query, {
hostname: [ required, isString, (string) => {
console.log(string.length);
if (string.length === 0) {
throw new ValidationError("May not be empty");
}
} ],
since: [ isString ]
});
return Promise.try(() => {
return autodiscoverClientConfiguration.discover(req.query.hostname);
}).then((clientConfiguration) => {
@ -68,7 +80,7 @@ router.get("/show-rooms", (req, res) => {
app.use(router);
app.use((error, req, res, next) => {
if (error instanceof UpstreamError || error instanceof autodiscoverClientConfiguration.LookupFailed) {
if (error instanceof UpstreamError || error instanceof autodiscoverClientConfiguration.LookupFailed || error instanceof ValidationError) {
res.render("error", { error: error });
} else {
throw error;

3
package.json

@ -15,7 +15,8 @@
"express": "^4.17.1",
"express-promise-router": "^3.0.3",
"react": "^16.9.0",
"react-dom": "^16.9.0"
"react-dom": "^16.9.0",
"validatem": "^0.2.0"
},
"devDependencies": {
"nodemon": "^1.19.1"

5
public/style.css

@ -2,6 +2,11 @@ body {
font-family: sans-serif;
}
h1 {
display: inline-block;
margin-right: 2em;
}
.container {
max-width: 960px;
margin: 0 auto;

4
views/error.jsx

@ -7,7 +7,9 @@ const Layout = require("./layout");
module.exports = function Error({ error }) {
return (
<Layout>
{error.message}
<pre>
{error.message}
</pre>
</Layout>
);
};

1
views/layout.jsx

@ -15,6 +15,7 @@ module.exports = function Layout({ children }) {
<body>
<div className="container">
<h1>Matrix Room List Viewer</h1>
<a href="https://git.cryto.net/joepie91/matrix-room-list-viewer">Source code</a>
<hr/>
{children}
</div>

Loading…
Cancel
Save