Handle errors in print requests

This commit is contained in:
René Preuß
2024-03-04 10:06:13 +01:00
parent 2c9b08a511
commit ef4bb777f2
2 changed files with 50 additions and 18 deletions

View File

@@ -86,7 +86,7 @@ curl --location 'http://127.0.0.1:1903/printers/PM-241-BT%20(Network)/print' \
--form 'copies="1"'
```
#### Response:
#### Successful Response:
> On windows the response does not return any real job id. Instead, it returns a 0.
@@ -97,3 +97,22 @@ curl --location 'http://127.0.0.1:1903/printers/PM-241-BT%20(Network)/print' \
]
}
```
#### Error Responses:
If the request is not successful, the response will contain an error message and an error id.
```json
{
"error": "Missing PDF file",
"error_id": "missing_pdf"
}
```
Here is a list of possible error ids (but not all of them are implemented yet):
| Error ID | Description |
|---------------|-------------------------------|
| missing_pdf | Missing PDF file |
| invalid_label | Invalid label format |
| null | Unsuccessful print job: {...} |

View File

@@ -19,7 +19,9 @@ app.get('/', (req, res) => {
})
app.get('/printers', async (req, res) => {
try {
const printers = await getPrinters()
return res.json(printers.map(printer => {
return {
default: false,
@@ -28,6 +30,10 @@ app.get('/printers', async (req, res) => {
name: printer.printer || printer.name,
}
}))
} catch (e) {
console.error('Error getting printers', e)
return res.json([])
}
})
app.post('/printers/:printer/print', upload.single('file'), async (req, res) => {
@@ -36,6 +42,7 @@ app.post('/printers/:printer/print', upload.single('file'), async (req, res) =>
// query: user-id: string, docType: label
// form data: file: binary, copies: string, shipment-ids: string
try {
const fileToPrint = req.file.path
const printJob = await print(fileToPrint, printer)
const jobId = getRequestId(printJob)
@@ -43,7 +50,13 @@ app.post('/printers/:printer/print', upload.single('file'), async (req, res) =>
return res.json({
jobs: [jobId],
})
} catch (e) {
console.error('Error printing', e)
return res.status(400).json({
error: 'Unsuccessful print job: ' + e.message,
error_id: null,
})
}
})
app.listen(port, () => {