overleaf/services/spelling/app/js/SpellingAPIController.js
2019-07-11 12:29:00 +02:00

78 lines
2 KiB
JavaScript

const SpellingAPIManager = require('./SpellingAPIManager')
const logger = require('logger-sharelatex')
const metrics = require('metrics-sharelatex')
function extractCheckRequestData(req) {
const token = req.params ? req.params.user_id : undefined
const wordCount =
req.body && req.body.words ? req.body.words.length : undefined
return { token, wordCount }
}
function extractLearnRequestData(req) {
const token = req.params ? req.params.user_id : undefined
const word = req.body ? req.body.word : undefined
return { token, word }
}
module.exports = {
check(req, res) {
metrics.inc('spelling-check', 0.1)
const { token, wordCount } = extractCheckRequestData(req)
logger.info({ token, wordCount }, 'running check')
SpellingAPIManager.runRequest(token, req.body, function(error, result) {
if (error != null) {
logger.err(
{
err: error,
user_id: token,
wordCount
},
'error processing spelling request'
)
return res.sendStatus(500)
}
res.send(result)
})
},
learn(req, res, next) {
metrics.inc('spelling-learn', 0.1)
const { token, word } = extractLearnRequestData(req)
logger.info({ token, word }, 'learning word')
SpellingAPIManager.learnWord(token, req.body, function(error) {
if (error != null) {
return next(error)
}
res.sendStatus(200)
next()
})
},
deleteDic(req, res, next) {
const { token, word } = extractLearnRequestData(req)
logger.log({ token, word }, 'deleting user dictionary')
SpellingAPIManager.deleteDic(token, function(error) {
if (error != null) {
return next(error)
}
res.sendStatus(204)
})
},
getDic(req, res, next) {
const token = req.params ? req.params.user_id : undefined
logger.info(
{
token
},
'getting user dictionary'
)
SpellingAPIManager.getDic(token, function(error, words) {
if (error != null) {
return next(error)
}
res.send(words)
})
}
}