1 let querystring = require('querystring')
2 let stream_buffers = require('stream-buffers')
3 let XDate = require('xdate')
6 let navbar = await _require('/navbar.jst')
7 let contact_form = await _require('/contact_form.jst')
15 div(style="height: 15px;") {}
17 if (env.request.method == 'POST') {
18 let write_stream = new stream_buffers.WritableStreamBuffer()
19 let data = new Promise(
20 (resolve, reject) => {
22 on('finish', () => {resolve(write_stream.getContents())}).
23 on('error', () => {reject()})
26 env.request.pipe(write_stream)
27 let query = querystring.parse((await data).toString())
28 let full_email = `${query.first_name} ${query.last_name} <${query.email}>`
29 console.log('received contact form:', full_email)
31 // save the form contents in a dated logfile, so that we can
32 // recover manually if the email doesn't send for some reason
34 query.date = date.toUTCString()
36 await env.site.ensure_dir('/_logs')
38 `/_logs/contact_${date.toUTCString('yyyyMMdd')}.json`,
40 async result => {result.value.push(query)}
43 // send email (asynchronously)
44 ;(await env.site.get_emailjs('/_config/email_contact.json')).send(
47 from: 'Contact form <contact@ndcode.org>',
48 'reply-to': full_email,
49 to: 'Nick Downing <nick@ndcode.org>',
51 Object.prototype.hasOwnProperty.call(query, 'company') ?
52 'Enquiry: ' + query.company :
57 console.error(err.stack || err.message)
59 console.log('sent contact email:', full_email)
63 p {'Thanks! We\'ll be in touch as soon as we can.'}
66 p {'Do you require more information or consulting assistance with integrating the projects on this site? We\'d love to hear from you.'}
68 await contact_form(env, _out)