// 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) => { const type = req.headers['content-type']; if (!Fragment.isSupportedType(type)) { logger.warn(`${type} is not supported Content Type`); const errorResponse = createErrorResponse(415, 'Invalid file type'); res.status(415).json(errorResponse); } else { try{ const newFragment = new Fragment({ ownerId: req.user, created: new Date().toString(), update: new Date().toString(), type: req.headers['content-type'], size: Number(req.headers['content-length']), }); await newFragment.setData(req.body); logger.info({ newFragment }, '==== Successfully Created a new Fragment ===='); const host = (`http://${req.headers.host}`) || apiURL; res.setHeader('Location', `${host}/v1/fragments/${newFragment.id}`); let Location = host + '/v1/fragments/' + newFragment.id; logger.info(Location, '==== Successfully generate Location===='); const response = createSuccessResponse({ fragments: newFragment}); res.status(201).json(response); } catch(err){ logger.error(err.message, 'Something went wrong...'); res.status(500).json(createErrorResponse(401, err.message)); } } };