From 9a4a7e4c9f07e56b825762aec356d9a2aa42799e Mon Sep 17 00:00:00 2001 From: Dominik Hebeler <dominik@hebeler.club> Date: Tue, 7 Mar 2023 11:37:06 +0100 Subject: [PATCH] fixed response code for too many charges --- docs/api.md | 2 +- pass/routes/api.js | 33 ++++++++++++++++++--------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/docs/api.md b/docs/api.md index 25f0451..21ca503 100644 --- a/docs/api.md +++ b/docs/api.md @@ -108,7 +108,7 @@ Can take either amount or price. If both supplied only amount is taken into acco ### Example Response Successfull discharge will have a response code of `201` -If the key cannot be charged because it is already charged with too many Orders response code will be `403` +If the key cannot be charged because it is already charged with too many Orders response code will be `423` ```json { diff --git a/pass/routes/api.js b/pass/routes/api.js index 23793e2..62ce846 100644 --- a/pass/routes/api.js +++ b/pass/routes/api.js @@ -26,7 +26,7 @@ router.use((req, res, next) => { } }); -router.post("/key/create", (req, res) => { +router.post("/key/create", async (req, res) => { let amount = req.body.amount; if (!amount) { // If amount is not given but price is @@ -46,11 +46,9 @@ router.post("/key/create", (req, res) => { /** * @type {Order} */ + let key = await Key.GET_NEW_KEY(); let new_order; - Key.GET_NEW_KEY() - .then((key) => - Order.CREATE_NEW_ORDER(amount, key.get_key(), new Manual(note)) - ) + Order.CREATE_NEW_ORDER(amount, key.get_key(), new Manual(note)) .then((order) => { new_order = order; return new_order.captureOrder(); @@ -64,9 +62,11 @@ router.post("/key/create", (req, res) => { }); }) .catch((reason) => { - res.status(403).json({ - code: 403, - error: "Cannot create Order for given Key", + res.status(423).json({ + code: 423, + error: reason, + key: key.get_key(), + charged: 0 }); }); }); @@ -115,7 +115,7 @@ router.post("/key/:key/discharge", (req, res) => { }); }); -router.post("/key/:key/charge", (req, res) => { +router.post("/key/:key/charge", async (req, res) => { let amount = req.body.amount; if (!amount) { // If amount is not given but price is @@ -137,24 +137,27 @@ router.post("/key/:key/charge", (req, res) => { /** * @type {Order} */ + let key = await Key.GET_KEY(req.params.key); let new_order = null; - Order.CREATE_NEW_ORDER(amount, req.params.key, new Manual(note)) + Order.CREATE_NEW_ORDER(amount, key.get_key(), new Manual(note)) .then((order) => { new_order = order; return new_order.captureOrder(); }) .then(() => new_order.chargeKey()) - .then(async () => { + .then(() => { res.status(201).json({ - key: await new_order.getKeyFromOrderLink(), + key: key.get_key(), order_id: new_order.getOrderID(), charged: new_order.getAmount(), }); }) .catch((reason) => { - res.status(403).json({ - code: 403, - error: "Cannot create Order for given Key", + res.status(423).json({ + code: 423, + error: reason, + key: key.get_key(), + charged: 0 }); }); }); -- GitLab