1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- const fs = require('fs')
- const path = require('path')
- const budo = require('budo')
- const router = require('router')
- const bodyParser = require('body-parser')
- const S3 = require('aws-sdk/clients/s3')
- /**
- * Environment variables:
- *
- * - DO_REGION - Your space region, eg "ams3"
- * - DO_ACCESS_KEY - Your access key ID
- * - DO_SECRET_KEY - Your secret access key
- * - DO_SPACE - Your space's name.
- */
- if (!process.env.DO_REGION) throw new Error('Missing Space region, please set the DO_REGION environment variable (eg. "DO_REGION=ams3")')
- if (!process.env.DO_ACCESS_KEY) throw new Error('Missing access key, please set the DO_ACCESS_KEY environment variable')
- if (!process.env.DO_SECRET_KEY) throw new Error('Missing secret key, please set the DO_SECRET_KEY environment variable')
- if (!process.env.DO_SPACE) throw new Error('Missing Space name, please set the DO_SPACE environment variable')
- // Prepare the server.
- const PORT = process.env.PORT || 3452
- const app = router()
- // Set up the /params endpoint that will create signed URLs for us.
- const s3 = new S3({
- endpoint: `${process.env.DO_REGION}.digitaloceanspaces.com`,
- accessKeyId: process.env.DO_ACCESS_KEY,
- secretAccessKey: process.env.DO_SECRET_KEY
- })
- app.use(bodyParser.json())
- app.post('/params', (req, res, next) => {
- const { filename, contentType } = req.body
- s3.getSignedUrl('putObject', {
- Bucket: process.env.DO_SPACE,
- Key: filename,
- ContentType: contentType,
- Expires: 5 * 60 * 1000 // 5 minutes
- }, (err, data) => {
- if (err) return next(err)
- res.setHeader('content-type', 'application/json')
- res.end(JSON.stringify({ method: 'put', url: data }, null, 2))
- })
- })
- // Serve the built CSS file.
- app.get('/uppy.min.css', (req, res) => {
- res.setHeader('content-type', 'text/css')
- fs.createReadStream(path.join('../../dist/uppy.min.css')).pipe(res)
- })
- // Start the development server, budo.
- budo(path.join(__dirname, 'main.js'), {
- live: true,
- stream: process.stdout,
- port: PORT,
- middleware: app,
- browserify: {
- transform: [
- 'babelify',
- ['aliasify', {
- replacements: {
- '^uppy/lib/(.*?)$': path.join(__dirname, '../../src/$1')
- }
- }]
- ]
- }
- })
|