Spaces:
Sleeping
Sleeping
const express = require('express') | |
const bodyParser = require('body-parser') | |
const { translate } = require('./translate') | |
const cors = require('cors') | |
const fs = require('fs') | |
const app = express() | |
const PORT = 7860 | |
app.use(cors({ origin: '*' })) | |
app.use(bodyParser.json()) | |
let delay = 1500 | |
const delayIncrement = 100 | |
const maxDelay = 5000 | |
let currentTranslations = 0 | |
function delayFileTermination(delay) { | |
if (fs.existsSync('delay.txt')) { | |
delay = parseInt(fs.readFileSync('delay.txt', 'utf8')) | |
}else{ | |
fs.writeFile('delay.txt', 'delay:{$delay}', function(err){ | |
if(err = null){ | |
console.log('success') | |
}else{ | |
console.log('fail') | |
} | |
}) | |
} | |
} | |
console.log('File system loaded') | |
app.post('/translate', async (req, res) => { | |
console.log('Translate start') | |
currentTranslations++ | |
const { text, source_lang, target_lang } = req.body | |
try { | |
await new Promise(resolve => setTimeout(resolve, delay)) | |
const result = await translate(text, source_lang, target_lang) | |
const responseData = { | |
alternatives: result.alternatives, | |
code: 200, | |
data: result.text, | |
id: Math.floor(Math.random() * 10000000000), | |
method: 'Free', | |
source_lang, | |
target_lang, | |
} | |
res.json(responseData) | |
console.log(`"${text}" -> "${result.text}"`) | |
} catch (error) { | |
console.log('Translation failed : ${error}') | |
delay = delay + 100 | |
delayFileTermination(delay) | |
console("νμ¬ Delay νμ:" + delay + "ms") | |
} finally { | |
currentTranslations-- // λ²μ μ²λ¦¬κ° λλλ©΄ 1 κ°μ | |
} | |
}) | |
app.get('/', (req, res) => { | |
const delayMessage = fs.existsSync('delay.txt') ? fs.readFileSync('delay.txt', 'utf8') : '0' | |
const statusMessage = `μλ²κ° ꡬλλμμ΅λλ€. νμ¬ λλ μ΄ μκ°μ ${delay}msμ΄λ©°, νμ¬ μ²λ¦¬ μ€μΈ λ²μ μμ² μλ ${currentTranslations}건μ λλ€.` | |
res.send(statusMessage) | |
}) | |
app.listen(PORT, () => { | |
console.log(`Server is running on http://localhost:${PORT}`) | |
}) |