import request from 'request'
import logger from '@overleaf/logger'
import settings from '@overleaf/settings'
import OError from '@overleaf/o-error'

export function healthCheck(req, res) {
  const opts = {
    url: `http://localhost:3005/user/${settings.healthCheckUserId}/check`,
    json: {
      words: ['helllo'],
      language: 'en',
    },
    timeout: 1000 * 20,
  }
  return request.post(opts, function (err, response, body) {
    if (err != null) {
      return res.sendStatus(500)
    }

    const misspellings =
      body && body.misspellings ? body.misspellings[0] : undefined
    const numberOfSuggestions =
      misspellings && misspellings.suggestions
        ? misspellings.suggestions.length
        : 0

    if (numberOfSuggestions > 10) {
      logger.debug('health check passed')
      res.sendStatus(200)
    } else {
      logger.err(
        new OError('health check failed', { body, numberOfSuggestions })
      )
      res.sendStatus(500)
    }
  })
}
