From 5e712316d83c379645076ff868337981fcf82567 Mon Sep 17 00:00:00 2001 From: Jeff Zucker <44732708+jeff-zucker@users.noreply.github.com> Date: Fri, 24 May 2024 12:32:04 -0700 Subject: [PATCH] Update put.js send 200 or 201 depending on prexistance of resource The HTTP spec says that the Server MUST return a 200 or 204 if PUT replaces and existing resource. See second paragraph of https://httpwg.org/specs/rfc9110#PUT. Brought up by @CxRes. --- lib/handlers/put.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/handlers/put.js b/lib/handlers/put.js index 740bf346..681eb78b 100644 --- a/lib/handlers/put.js +++ b/lib/handlers/put.js @@ -62,6 +62,7 @@ async function putStream (req, res, next, stream = req) { // try { // Obtain details of the target resource let resourceExists = true + let returnStatus = 201; try { // First check if the file already exists await ldp.resourceMapper.mapUrlToFile({ url: req }) @@ -70,6 +71,7 @@ async function putStream (req, res, next, stream = req) { res.sendStatus(412) return next() } + returnStatus = 200; } catch (err) { resourceExists = false } @@ -77,7 +79,7 @@ async function putStream (req, res, next, stream = req) { // Fails with Append on existing resource if (!req.originalUrl.endsWith('.acl')) await checkPermission(req, resourceExists) await ldp.put(req, stream, getContentType(req.headers)) - res.sendStatus(201) + res.sendStatus(returnStatus) return next() } catch (err) { err.message = 'Can\'t write file/folder: ' + err.message