text: /* 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
   */
  const ExportsHandler = require('./ExportsHandler')
  const AuthenticationController = require('../Authentication/AuthenticationController')
  const logger = require('logger-sharelatex')
  
  module.exports = {
    exportProject(req, res, next) {
      const { project_id, brand_variation_id } = req.params
      const user_id = AuthenticationController.getLoggedInUserId(req)
      const export_params = {
        project_id,
        brand_variation_id,
        user_id
      }
  
      if (req.body) {
        if (req.body.firstName) {
          export_params.first_name = req.body.firstName.trim()
        }
        if (req.body.lastName) {
          export_params.last_name = req.body.lastName.trim()
        }
        // additional parameters for gallery exports
        if (req.body.title) {
          export_params.title = req.body.title.trim()
        }
        if (req.body.description) {
          export_params.description = req.body.description.trim()
        }
        if (req.body.author) {
          export_params.author = req.body.author.trim()
        }
        if (req.body.license) {
          export_params.license = req.body.license.trim()
        }
        if (req.body.showSource != null) {
          export_params.show_source = req.body.showSource
        }
      }
  
      return ExportsHandler.exportProject(export_params, function(
        err,
        export_data
      ) {
        if (err != null) {
          if (err.forwardResponse != null) {
            logger.log(
              { responseError: err.forwardResponse },
              'forwarding response'
            )
            const statusCode = err.forwardResponse.status || 500
            return res.status(statusCode).json(err.forwardResponse)
          } else {
            return next(err)
          }
        }
        logger.log(
          {
            user_id,
            project_id,
            brand_variation_id,
            export_v1_id: export_data.v1_id
          },
          'exported project'
        )
        return res.json({ export_v1_id: export_data.v1_id })
      })
    },
  
    exportStatus(req, res) {
      const { export_id } = req.params
      return ExportsHandler.fetchExport(export_id, function(err, export_json) {
        let json
        if (err != null) {
          json = {
            status_summary: 'failed',
            status_detail: err.toString
          }
          res.json({ export_json: json })
          return err
        }
        const parsed_export = JSON.parse(export_json)
        json = {
          status_summary: parsed_export.status_summary,
          status_detail: parsed_export.status_detail,
          partner_submission_id: parsed_export.partner_submission_id,
          v2_user_email: parsed_export.v2_user_email,
          v2_user_first_name: parsed_export.v2_user_first_name,
          v2_user_last_name: parsed_export.v2_user_last_name,
          title: parsed_export.title,
          token: parsed_export.token
        }
        return res.json({ export_json: json })
      })
    },
  
    exportDownload(req, res, next) {
      const { type, export_id } = req.params
  
      AuthenticationController.getLoggedInUserId(req)
      return ExportsHandler.fetchDownload(export_id, type, function(
        err,
        export_file_url
      ) {
        if (err != null) {
          return next(err)
        }
  
        return res.redirect(export_file_url)
      })
    }
  }
  