import express from 'express'
import getopts from 'getopts'

const app = express()

{{#each groups}}
/* {{{name}}} */
{{#each operations}}
app.{{lowerCase httpMethod}}('{{{expressPath fullPath}}}', function(req, res) {
	{{#if defaultResponse}}
	{{#hasExamples defaultResponse}}
	const defaultResponses: { contentType: string, body: string }[] = []
	{{#each defaultResponse.contents}}
	{{#each examples}}
	defaultResponses.push({
		contentType: "{{{mediaType.mediaType}}}",
		body: {{{valueString}}},
	})
	{{/each}}
	{{/each}}
	const response = defaultResponses[Math.floor(Math.random() * defaultResponses.length)];
	res.set('Content-Type', response.contentType)
	res.send(response.body)
	{{else}}
	//TODO
	res.status(503).send('Unimplemented')
	{{/hasExamples}}
	{{else}}
	//TODO
	res.status(503).send('Unimplemented')
	{{/if}}
})
{{/each}}

{{/each}}
const options = getopts(process.argv.slice(2), {
	alias: {
		port: 'p',
	},
	unknown: (option) => {
		console.log(`Unknown option: ${option}`)
		return false
	},
})

const port = options.port || 3000
const server = app.listen(port, function() {
	const address = server.address()
	if (typeof address === 'string') {
		console.log(`Listening on ${address}`)
	} else if (address) {
		console.log(`Listening on ${address.port}`)
	}
})
