// src/routes/api/get.js // Use crypto.randomUUID() to create unique IDs, see: // https://nodejs.org/api/crypto.html#cryptorandomuuidoptions const { Fragment } = require('../../model/fragment'); const logger = require('../../logger'); const createSuccessResponse = require('../../response').createSuccessResponse; const createErrorResponse = require('../../response').createErrorResponse; const apiURL = process.env.API_URL; module.exports = async (req, res) => { if (!Buffer.isBuffer(req.body)) { return res.status(415).json(createErrorResponse(415, 'Unsupported Type')); } try{ const fragmentID = req.params.id.split('.')[0]; logger.debug(`fragment id: ${fragmentID}`); const fragmentById = new Fragment(await Fragment.byId(req.user, fragmentID)); if (fragmentById.type !== req.get('Content-Type')) { return res .status(400) .json(createErrorResponse(400, "Content type doesn't match the existing fragment's type")); } fragmentById.updated = new Date(); await fragmentById.setData(req.body); logger.info({ fragmentById }, '==== Successfully update a new Fragment ===='); const host = (`http://${req.headers.host}`) || apiURL; res.setHeader('Location', `${host}/v1/fragments/${fragmentById.id}`); let Location = host + '/v1/fragments/' + fragmentById.id; logger.info(Location, '==== Successfully generate Location===='); const response = createSuccessResponse({ fragments: fragmentById}); res.status(200).json(response); } catch(err){ logger.error(err.message, 'Something went wrong...'); res.status(404).json(createErrorResponse(404, err.message)); } };