MockDocstoreApi.js 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /* eslint-disable
  2. camelcase,
  3. max-len,
  4. */
  5. // TODO: This file was created by bulk-decaffeinate.
  6. // Fix any style issues and re-enable lint.
  7. /*
  8. * decaffeinate suggestions:
  9. * DS102: Remove unnecessary code created because of implicit returns
  10. * DS205: Consider reworking code to avoid use of IIFEs
  11. * DS207: Consider shorter variations of null checks
  12. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  13. */
  14. let MockDocStoreApi
  15. const express = require('express')
  16. const bodyParser = require('body-parser')
  17. const app = express()
  18. module.exports = MockDocStoreApi = {
  19. docs: {},
  20. run() {
  21. app.post(
  22. '/project/:project_id/doc/:doc_id',
  23. bodyParser.json(),
  24. (req, res, next) => {
  25. const { project_id, doc_id } = req.params
  26. const { lines, version, ranges } = req.body
  27. if (this.docs[project_id] == null) {
  28. this.docs[project_id] = {}
  29. }
  30. this.docs[project_id][doc_id] = { lines, version, ranges }
  31. if (this.docs[project_id][doc_id].rev == null) {
  32. this.docs[project_id][doc_id].rev = 0
  33. }
  34. this.docs[project_id][doc_id].rev += 1
  35. this.docs[project_id][doc_id]._id = doc_id
  36. return res.json({
  37. modified: true,
  38. rev: this.docs[project_id][doc_id].rev
  39. })
  40. }
  41. )
  42. app.get('/project/:project_id/doc', (req, res, next) => {
  43. const docs = (() => {
  44. const result = []
  45. for (let doc_id in this.docs[req.params.project_id]) {
  46. const doc = this.docs[req.params.project_id][doc_id]
  47. result.push(doc)
  48. }
  49. return result
  50. })()
  51. return res.json(docs)
  52. })
  53. app.get('/project/:project_id/doc/:doc_id', (req, res, next) => {
  54. const { project_id, doc_id } = req.params
  55. const doc = this.docs[project_id][doc_id]
  56. if (doc == null || (doc.deleted && !req.query.include_deleted)) {
  57. return res.sendStatus(404)
  58. } else {
  59. return res.json(doc)
  60. }
  61. })
  62. app.delete('/project/:project_id/doc/:doc_id', (req, res, next) => {
  63. const { project_id, doc_id } = req.params
  64. if (this.docs[project_id] == null) {
  65. return res.sendStatus(404)
  66. } else if (this.docs[project_id][doc_id] == null) {
  67. return res.sendStatus(404)
  68. } else {
  69. this.docs[project_id][doc_id].deleted = true
  70. return res.sendStatus(204)
  71. }
  72. })
  73. return app
  74. .listen(3016, function(error) {
  75. if (error != null) {
  76. throw error
  77. }
  78. })
  79. .on('error', function(error) {
  80. console.error('error starting MockDocStoreApi:', error.message)
  81. return process.exit(1)
  82. })
  83. }
  84. }
  85. MockDocStoreApi.run()