let querystring = require('querystring') let stream_buffers = require('stream-buffers') return async env => { _out = [] _out.push( ` Calculation ` ) if (env.request.method == 'POST') { let write_stream = new stream_buffers.WritableStreamBuffer() let data = new Promise( (resolve, reject) => { write_stream. on('finish', () => {resolve(write_stream.getContents())}). on('error', () => {reject()}) } ) env.request.pipe(write_stream) let query = querystring.parse((await data).toString()) let radius_and_units = query.radius.split(' ') let radius = parseFloat(radius_and_units[0]) let units = radius_and_units[1] || 'units' let area = Math.PI * radius * radius let circumference = Math.PI * radius * 2 let diameter = radius * 2 if (isNaN(radius) || radius < 0) { _out.push( `

Error - Unable to Calculate Missing or Negative Radius

` ) } else { _out.push( `

The radius is: ${radius} ${units}

The area is: ${area} ${units}²

The circumference is: ${circumference} ${units}

The diameter is: ${diameter} ${units}

` ) } _out.push( ` ` ) } else { _out.push( `

Please go here.

` ) _out.push( ` ` ) } env.site.serve( env, 200, Buffer.from(_out.join('')), 'calculatebutton.html.jst' ) }