-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelete.js
More file actions
51 lines (47 loc) · 1.57 KB
/
delete.js
File metadata and controls
51 lines (47 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import express from "express"
import checkAccessToken from "../tokens.js"
const router = express.Router()
/**
* DELETE an object by ID via the RERUM API.
* @route DELETE /delete/:id
* @param {string} id - The RERUM object ID to delete
*/
router.delete('/:id', checkAccessToken, async (req, res, next) => {
try {
const deleteURL = `${process.env.RERUM_API_ADDR}delete/${req.params.id}`
const deleteOptions = {
method: "DELETE",
headers: {
'user-agent': 'TinyPen',
'Origin': process.env.ORIGIN,
'Authorization': `Bearer ${process.env.ACCESS_TOKEN}`
}
}
await fetch(deleteURL, deleteOptions)
.then(async (resp) => {
if (resp.ok) return
// The response from RERUM indicates a failure, likely with a specific code and textual body
let rerumErrorMessage
try {
rerumErrorMessage = `${resp.status ?? 500}: ${deleteURL} - ${await resp.text()}`
} catch (e) {
rerumErrorMessage = `500: ${deleteURL} - A RERUM error occurred`
}
const err = new Error(rerumErrorMessage)
err.status = 502
throw err
})
.catch(err => {
if (err.status === 502) throw err
const genericRerumNetworkError = new Error(`500: ${deleteURL} - A RERUM error occurred`)
genericRerumNetworkError.status = 502
throw genericRerumNetworkError
})
res.status(204).end()
}
catch (err) {
console.error(err)
res.status(err.status ?? 500).type('text/plain').send(err.message ?? 'An error occurred')
}
})
export default router