From 2cfb93c04b629d050c7efdbd20303030c000d27c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=CC=81=20Ca=CC=81mara?= Date: Thu, 25 Jan 2018 10:26:16 +0100 Subject: [PATCH] * Moved `chunkUpload` backend code to utils file --- src/utils/chunkUpload.js | 55 ++++++++++++++++++++++++++++++++++++ webpack.config.js | 60 ++-------------------------------------- 2 files changed, 58 insertions(+), 57 deletions(-) create mode 100644 src/utils/chunkUpload.js diff --git a/src/utils/chunkUpload.js b/src/utils/chunkUpload.js new file mode 100644 index 0000000..858d22e --- /dev/null +++ b/src/utils/chunkUpload.js @@ -0,0 +1,55 @@ +const CHUNK_SIZE = 1048576 +const ChunkActiveUploads = {} + +const chunkUploadStart = (req, res) => { + const uuid = Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1) + ChunkActiveUploads[uuid] = {} + + return res.json({ + status: 'success', + data: { + session_id: uuid, + start_offset: 0, + end_offset: CHUNK_SIZE + } + }) +} + +const chunkUploadPart = (req, res) => { + setTimeout(() => { + const rand = Math.random() + if (rand <= 0.25) { + res.status(500) + res.json({ status: 'error', error: 'server' }) + } else { + res.send({ status: 'success' }) + } + }, 100 + parseInt(Math.random() * 2000, 10)) +} + +const chunkUploadFinish = (req, res) => { + setTimeout(() => { + const rand = Math.random() + if (rand <= 0.25) { + res.status(500) + res.json({ status: 'error', error: 'server' }) + } else { + res.send({ status: 'success' }) + } + }, 100 + parseInt(Math.random() * 2000, 10)) +} + +module.exports = (req, res) => { + switch (req.body.phase) { + case 'start': + return chunkUploadStart(req, res) + + case 'upload': + return chunkUploadPart(req, res) + + case 'finish': + return chunkUploadFinish(req, res) + } +} diff --git a/webpack.config.js b/webpack.config.js index 0ea011c..e24c8d1 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -4,68 +4,12 @@ const webpack = require('webpack') const packageInfo = require('./package') -const bodyParser = require('webpack-body-parser') +const chunkUpload = require('./src/utils/chunkUpload') process.env.NODE_ENV = process.env.NODE_ENV || 'production' const isDev = process.env.NODE_ENV === 'development' -const CHUNK_SIZE = 1048576 -const ChunkActiveUploads = {} - -const chunkUploadStart = (req, res) => { - const uuid = Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1) - ChunkActiveUploads[uuid] = {} - - return res.json({ - status: 'success', - data: { - session_id: uuid, - start_offset: 0, - end_offset: CHUNK_SIZE - } - }) -} - -const chunkUploadPart = (req, res) => { - setTimeout(() => { - const rand = Math.random() - if (rand <= 0.25) { - res.status(500) - res.json({ status: 'error', error: 'server' }) - } else { - res.send({ status: 'success' }) - } - }, 100 + parseInt(Math.random() * 2000, 10)) -} - -const chunkUploadFinish = (req, res) => { - setTimeout(() => { - const rand = Math.random() - if (rand <= 0.25) { - res.status(500) - res.json({ status: 'error', error: 'server' }) - } else { - res.send({ status: 'success' }) - } - }, 100 + parseInt(Math.random() * 2000, 10)) -} - -const chunkUpload = (req, res) => { - switch (req.body.phase) { - case 'start': - return chunkUploadStart(req, res) - - case 'upload': - return chunkUploadPart(req, res) - - case 'finish': - return chunkUploadFinish(req, res) - } -} - function baseConfig() { let config = { output: { @@ -243,6 +187,8 @@ module.exports = merge(baseConfig(), { res.json({ success: true }) } + const bodyParser = require('webpack-body-parser') + // Chunk upload app.post('/upload/chunk', bodyParser.json(), chunkUpload)