mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-24 21:12:38 -04:00
80 lines
2.2 KiB
JavaScript
80 lines
2.2 KiB
JavaScript
|
/* eslint-disable
|
||
|
camelcase,
|
||
|
max-len,
|
||
|
*/
|
||
|
// TODO: This file was created by bulk-decaffeinate.
|
||
|
// Fix any style issues and re-enable lint.
|
||
|
/*
|
||
|
* decaffeinate suggestions:
|
||
|
* DS102: Remove unnecessary code created because of implicit returns
|
||
|
* DS207: Consider shorter variations of null checks
|
||
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
||
|
*/
|
||
|
let MockFileStoreApi
|
||
|
const express = require('express')
|
||
|
const bodyParser = require('body-parser')
|
||
|
const app = express()
|
||
|
|
||
|
module.exports = MockFileStoreApi = {
|
||
|
files: {},
|
||
|
|
||
|
run() {
|
||
|
app.post('/project/:project_id/file/:file_id', (req, res, next) => {
|
||
|
const chunks = []
|
||
|
req.on('data', chunk => chunks.push(chunk))
|
||
|
|
||
|
return req.on('end', () => {
|
||
|
const content = Buffer.concat(chunks).toString()
|
||
|
const { project_id, file_id } = req.params
|
||
|
if (this.files[project_id] == null) {
|
||
|
this.files[project_id] = {}
|
||
|
}
|
||
|
this.files[project_id][file_id] = { content }
|
||
|
return res.sendStatus(200)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
app.get('/project/:project_id/file/:file_id', (req, res, next) => {
|
||
|
const { project_id, file_id } = req.params
|
||
|
const { content } = this.files[project_id][file_id]
|
||
|
return res.send(content)
|
||
|
})
|
||
|
|
||
|
// handle file copying
|
||
|
app.put(
|
||
|
'/project/:project_id/file/:file_id',
|
||
|
bodyParser.json(),
|
||
|
(req, res, next) => {
|
||
|
const { project_id, file_id } = req.params
|
||
|
const { source } = req.body
|
||
|
const { content } =
|
||
|
this.files[source.project_id] != null
|
||
|
? this.files[source.project_id][source.file_id]
|
||
|
: undefined
|
||
|
if (content == null) {
|
||
|
return res.sendStatus(500)
|
||
|
} else {
|
||
|
if (this.files[project_id] == null) {
|
||
|
this.files[project_id] = {}
|
||
|
}
|
||
|
this.files[project_id][file_id] = { content }
|
||
|
return res.sendStatus(200)
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
return app
|
||
|
.listen(3009, function(error) {
|
||
|
if (error != null) {
|
||
|
throw error
|
||
|
}
|
||
|
})
|
||
|
.on('error', function(error) {
|
||
|
console.error('error starting MockFileStoreApi:', error.message)
|
||
|
return process.exit(1)
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
MockFileStoreApi.run()
|