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(
`