BucketController.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /* eslint-disable
  2. no-unused-vars,
  3. */
  4. // TODO: This file was created by bulk-decaffeinate.
  5. // Fix any style issues and re-enable lint.
  6. /*
  7. * decaffeinate suggestions:
  8. * DS102: Remove unnecessary code created because of implicit returns
  9. * DS207: Consider shorter variations of null checks
  10. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  11. */
  12. let BucketController
  13. const settings = require('settings-sharelatex')
  14. const logger = require('logger-sharelatex')
  15. const FileHandler = require('./FileHandler')
  16. const metrics = require('metrics-sharelatex')
  17. const Errors = require('./Errors')
  18. module.exports = BucketController = {
  19. getFile(req, res) {
  20. const { bucket } = req.params
  21. const key = req.params[0]
  22. const credentials =
  23. settings.filestore.s3BucketCreds != null
  24. ? settings.filestore.s3BucketCreds[bucket]
  25. : undefined
  26. const options = {
  27. key,
  28. bucket,
  29. credentials
  30. }
  31. metrics.inc(`${bucket}.getFile`)
  32. logger.log({ key, bucket }, 'receiving request to get file from bucket')
  33. return FileHandler.getFile(bucket, key, options, function(err, fileStream) {
  34. if (err != null) {
  35. logger.err({ err, key, bucket }, 'problem getting file from bucket')
  36. if (err instanceof Errors.NotFoundError) {
  37. return res.send(404)
  38. } else {
  39. return res.send(500)
  40. }
  41. } else {
  42. logger.log({ key, bucket }, 'sending bucket file to response')
  43. return fileStream.pipe(res)
  44. }
  45. })
  46. }
  47. }