Send console message with healthy render
This commit is contained in:
@@ -14,19 +14,8 @@ app.post('/render', async (req, res) => {
|
||||
const { data } = await axios.post(invocationURL(5052), {
|
||||
body: Buffer.from(JSON.stringify(req.body)).toString('base64'),
|
||||
})
|
||||
if (data.statusCode !== 200) {
|
||||
res.status(data.statusCode)
|
||||
res.send(res.body)
|
||||
} else {
|
||||
const fileContents = Buffer.from(data.body, 'base64')
|
||||
|
||||
const readStream = new stream.PassThrough()
|
||||
readStream.end(fileContents)
|
||||
|
||||
res.set('Content-disposition', 'attachment; filename=' + 'output')
|
||||
res.set('Content-Type', 'image/png')
|
||||
readStream.pipe(res)
|
||||
}
|
||||
res.status(data.statusCode)
|
||||
res.send(data.body)
|
||||
})
|
||||
|
||||
app.listen(port, () => {
|
||||
|
||||
@@ -45,11 +45,11 @@ const render = async (req, _context, callback) => {
|
||||
console.log(image, 'encoded image')
|
||||
const response = {
|
||||
statusCode: 200,
|
||||
headers: {
|
||||
'content-type': 'image/png',
|
||||
},
|
||||
body: image,
|
||||
isBase64Encoded: true,
|
||||
body: JSON.stringify({
|
||||
imageBase64: image,
|
||||
result,
|
||||
tempFile,
|
||||
}),
|
||||
}
|
||||
callback(null, response)
|
||||
}
|
||||
|
||||
@@ -64,11 +64,11 @@ async function runCommand(command, timeout = 5000) {
|
||||
}
|
||||
if (stderr) {
|
||||
console.log(`stderr: ${stderr}`)
|
||||
resolve(`stderr: ${stderr}`)
|
||||
resolve(stderr)
|
||||
return
|
||||
}
|
||||
console.log(`stdout: ${stdout}`)
|
||||
resolve(`stdout: ${stdout}`)
|
||||
resolve(stdout)
|
||||
})
|
||||
setTimeout(() => {
|
||||
reject('timeout')
|
||||
|
||||
@@ -7,12 +7,12 @@ const IdeConsole = () => {
|
||||
<div className="p-8 border-2 m-2 overflow-y-auto">
|
||||
<div>
|
||||
{state.consoleMessages?.map(({ type, message }, index) => (
|
||||
<div
|
||||
<pre
|
||||
className={'font-mono ' + (type === 'error' ? 'text-red-500' : '')}
|
||||
key={message + index}
|
||||
>
|
||||
-> {message}
|
||||
</div>
|
||||
{message}
|
||||
</pre>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -124,8 +124,7 @@ const IdeViewer = () => {
|
||||
useEffect(() => {
|
||||
setImage(
|
||||
state.objectData?.type === 'png' &&
|
||||
state.objectData?.data &&
|
||||
window.URL.createObjectURL(state.objectData?.data)
|
||||
'data:image/png;base64,' + state.objectData?.data
|
||||
)
|
||||
setIsDragging(false)
|
||||
}, [state.objectData])
|
||||
|
||||
@@ -50,20 +50,20 @@ export const render = async ({ code, settings }) => {
|
||||
status: 'error',
|
||||
message: {
|
||||
type: 'error',
|
||||
message: cleanedErrorMessage,
|
||||
message: addDateToLog(cleanedErrorMessage),
|
||||
},
|
||||
}
|
||||
}
|
||||
const data = await response.blob()
|
||||
const data = await response.json()
|
||||
return {
|
||||
status: 'healthy',
|
||||
objectData: {
|
||||
type: 'png',
|
||||
data,
|
||||
data: data.imageBase64,
|
||||
},
|
||||
message: {
|
||||
type: 'message',
|
||||
message: 'successful render',
|
||||
message: addDateToLog(data.result),
|
||||
},
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -75,7 +75,7 @@ export const render = async ({ code, settings }) => {
|
||||
status: 'error',
|
||||
message: {
|
||||
type: 'error',
|
||||
message: 'network issue',
|
||||
message: addDateToLog('network issue'),
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -87,3 +87,8 @@ const openScad = {
|
||||
}
|
||||
|
||||
export default openScad
|
||||
|
||||
function addDateToLog(message) {
|
||||
return `-> ${new Date().toLocaleString()}
|
||||
${message}`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user