"use strict"; const express = require("express"); const expressPromiseRouter = require("express-promise-router"); const bodyParser = require("body-parser"); const cors = require("cors"); const url = require("url"); const debugMiddleware = require("./src/debug-middleware"); const accessTokenMiddleware = require("./src/middlewares/access-token"); const clientApiRouter = require("./src/routers/client-api"); const configuration = require("./config.json"); let baseUrl = url.format({ protocol: (configuration.tls) ? "https" : "http", host: configuration.hostname }); let state = { configuration }; let app = express(); let router = expressPromiseRouter(); router.use(bodyParser.json()); router.use(accessTokenMiddleware); router.use(debugMiddleware()); router.options("*", cors({ methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], allowedHeaders: ["Origin", "X-Requested-With", "Content-Type", "Accept", "Authorization"], optionsSuccessStatus: 200 })); router.use("/_matrix/client", clientApiRouter(state)); router.get("/", (req, res) => { res.send("Hello world!"); }); router.get("/.well-known/matrix/client", (req, res) => { let response = { "m.homeserver": { base_url: baseUrl } }; if (configuration.identity_server != null) { response["m.identity_server"] = { base_url: configuration.identity_server }; } res.json(response); }); app.use(router); app.listen(3000, () => { console.log("listening on 3000"); });