1 let querystring = require('querystring')
2 let stream_buffers = require('stream-buffers')
3 let XDate = require('xdate')
6 if (env.request.method == 'POST') {
7 let write_stream = new stream_buffers.WritableStreamBuffer()
8 let data = new Promise(
11 on('finish', () => {resolve(write_stream.getContents())}).
12 on('error', () => {reject()})
15 env.request.pipe(write_stream)
16 let query = querystring.parse((await data).toString())
17 console.log('received feedback form:', JSON.stringify(query)) //query.page)
19 // save the form contents in a dated logfile, so that we can
20 // recover manually if the email doesn't send for some reason
22 query.date = date.toUTCString()
24 await env.site.ensure_dir('/_logs')
26 `/_logs/feedback_${date.toUTCString('yyyyMMdd')}.json`,
28 async result => {result.value.push(query)}
31 // send email (asynchronously)
32 ;(await env.site.get_emailjs('/_config/email_feedback.json')).send(
35 from: 'Feedback form <feedback@ndcode.org>',
36 to: 'Nick Downing <nick@ndcode.org>',
37 subject: 'Page: ' + query.page
41 console.error(err.stack || err.message)
43 console.log('sent feedback email:', query.page)
47 env.site.serve(env, 200, Buffer.from('Thanks!'), 'feedback_form.html.jst')