summaryrefslogtreecommitdiffstats
path: root/examples/server.js
blob: 2012c42a2fb42b7a4f784515b26258cacc0895e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict'

const createCert = require('create-cert')
const {
	createServer: createGeminiServer,
	DEFAULT_PORT,
} = require('..')

const onRequest = (req, res) => {
	if (req.path === '/foo') {
		res.write('foo')
		res.end('!')
	} else if (req.path === '/bar') {
		res.redirect('/foo')
	} else {
		res.gone()
	}
}

const onError = (err) => {
	console.error(err)
	process.exit(1)
}

createCert('example.org')
.then((keys) => {
	const server = createGeminiServer({
		tlsOpt: keys,
		// todo: SNICallback
	}, onRequest)
	server.on('error', onError)

	server.listen(DEFAULT_PORT, (err) => {
		if (err) return onError(err)
		const {address, port} = server.address()
		console.info(`listening on ${address}:${port}`)
	})
})
.catch(onError)