import express from 'express' import { raw } from 'body-parser' import cors from 'cors' import config from 'config' import debug from 'debug' const log = debug('http') import serverRenderer from './middleware/renderer' import event from './middleware/event' import oembed from './middleware/oembed' import urlExpand from './middleware/urlexpand' import releases from './middleware/android' import { instance } from './middleware/mastodon' const PORT = process.env.LISTEN_PORT || 8081 import path from 'path' import { webhook, webhookPath } from './durov' import { get_count } from './db/users' // initialize the application and create the routes const app = express() app.use(raw()) app.use(cors()) const router = express.Router() router.post('/api/v2/sender', event) router.get('/api/v2/oembed', oembed) router.get('/api/v2/urlexpand', urlExpand) router.get('/api/apps/android/releases', releases) // Mastodon API router.get('/api/v2/instance', instance) const durov_webhook = webhookPath() if (durov_webhook) { router.post(`/api/v2/${durov_webhook}`, webhook) } router.use('^/$', serverRenderer) const STATIC_ROOT = config.get('service.static_root') || path.resolve(__dirname, 'public') // other static resources should just be served as they are router.use(express.static( STATIC_ROOT, { maxAge: '30d' }, )) router.use('*', serverRenderer) app.use(router) get_count().then(count => { log(`Registered users: ${JSON.stringify(count)}`) }).catch(log) // start the app app.listen(PORT, (error) => { if (error) { return console.log('something bad happened', error) } log('listening on ' + PORT + '...') })