1 let querystring = require('querystring')
2 let stream_buffers = require('stream-buffers')
3 let XDate = require('xdate')
6 let globals = await env.site.get_json('/_config/globals.json')
9 if (env.request.method === 'POST') {
10 let write_stream = new stream_buffers.WritableStreamBuffer()
11 let data = new Promise(
12 (resolve, reject) => {
14 on('finish', () => {resolve(write_stream.getContents())}).
15 on('error', () => {reject()})
18 env.request.pipe(write_stream)
19 let query = querystring.parse((await data).toString())
20 console.log('received feedback form:', query.page)
22 // save the form contents in a dated logfile, so that we can
23 // recover manually if the email doesn't send for some reason
25 query.date = date.toUTCString()
27 let transaction = env.site.database.Transaction()
32 await transaction.get({})
34 ).get(date.toUTCString('yyyyMMdd'), {})
36 ).push(transaction.json_to_logjson(query))
39 // send email (asynchronously)
40 let emailjs_feedback = await env.site.get_emailjs(
41 '/_config/email_feedback.json'
43 emailjs_feedback.send(
45 from: globals.feedback_from,
46 to: globals.feedback_to,
47 subject: 'Page: ' + query.page,
52 console.error(err.stack || err.message)
54 console.log('sent feedback email:', query.page)
61 message = 'Please POST.'
63 env.site.serve(env, 200, Buffer.from(message), 'feedback.html.jst')