File size: 2,024 Bytes
c791e2a
 
 
 
 
 
 
 
 
 
 
cae0d02
c791e2a
 
 
12d5b92
e01be37
 
 
 
 
 
 
 
 
 
 
 
12d5b92
 
e01be37
 
12d5b92
 
 
 
 
c791e2a
12d5b92
c791e2a
12d5b92
 
c791e2a
12d5b92
c791e2a
12d5b92
 
 
 
 
 
 
 
 
c791e2a
8ab856a
 
c791e2a
adec696
e01be37
7881131
e01be37
c791e2a
 
12d5b92
c791e2a
12d5b92
 
c791e2a
e01be37
c791e2a
7b3ad18
c791e2a
12d5b92
 
c791e2a
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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}`)
})