fragments / src / routes / api / post.js
post.js
Raw
// 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));
    }


  }
};