You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
5.1 KiB
221 lines
5.1 KiB
const mksec = require(__dirname+'/index.js'); |
|
const fy = require(__dirname+'/fy.js'); |
|
const app = require('express')(); |
|
const md5 = require('md5'); |
|
const bodyParser = require('body-parser'); |
|
const fs = require('fs'); |
|
|
|
port = 3000; |
|
data_folder = __dirname+'/data/' |
|
|
|
|
|
app.listen(port, () => console.log(`mksec-server listening at http://localhost:${port}`)); |
|
app.use(bodyParser.json()); |
|
app.use(bodyParser.urlencoded({extended: true})); |
|
app.use(require('express').static(__dirname+'/public')); |
|
|
|
app.get('/mksec/', async (req, res) => { |
|
|
|
try{ |
|
let arr = await mksec({ |
|
word: req.query.word |
|
}); |
|
|
|
res.send(arr[Math.floor((Math.random()*arr.length))]); |
|
}catch(e){ |
|
res.status(404).send('No such word or sentences!!'); |
|
} |
|
|
|
}); |
|
|
|
app.get('/fy/', async (req, res) => { |
|
|
|
try{ |
|
let arr = await fy({ |
|
word: req.query.word, |
|
type: (req.query.hasOwnProperty('type') && req.query.type == 'word') ? 'word' : 'sentence' |
|
}); |
|
res.send(arr); |
|
}catch(e){ |
|
res.status(404).send({ |
|
code: 404, |
|
message: 'No such word or sentences!!' |
|
}); |
|
} |
|
|
|
}); |
|
|
|
|
|
app.post('/publish/', async (req, res) => { |
|
|
|
if(req.body.hasOwnProperty('email') && req.body.hasOwnProperty('data')){ |
|
let hash = md5(req.body.email); |
|
let data = JSON.parse(req.body.data); |
|
let path = data_folder + hash + '.json'; |
|
|
|
let o = []; |
|
if(fs.existsSync(path)){ |
|
o = JSON.parse(fs.readFileSync(path, 'utf-8')); |
|
} |
|
|
|
let oldNum = o.length; |
|
|
|
for(let i = 0; i < data.length; i ++){ |
|
if(!o.find(item => { |
|
return item.word == data[i]; |
|
})){ |
|
o.push({ |
|
word: data[i], |
|
level: 0 |
|
}); |
|
} |
|
} |
|
|
|
fs.writeFileSync(path, JSON.stringify(o)); |
|
|
|
res.send({ |
|
code: 200, |
|
message: 'Added '+(o.length - oldNum)+' new words. Totally '+(o.length)+' words.' |
|
}); |
|
return; |
|
} |
|
|
|
res.send({ |
|
code: 500, |
|
message: 'Illegal email or data format!!' |
|
}); |
|
}); |
|
|
|
|
|
|
|
|
|
|
|
app.get('/getData/', async (req, res) => { |
|
if(req.query.hasOwnProperty('email')){ |
|
|
|
let hash = md5(req.query.email); |
|
let path = data_folder + hash + '.json'; |
|
|
|
if(!fs.existsSync(path)){ |
|
res.send({ |
|
code: 404, |
|
message: 'No such user!!' |
|
}); |
|
return; |
|
} |
|
let data = JSON.parse(fs.readFileSync(path, 'utf-8')); |
|
|
|
data = data.sort(() =>Math.random() - 0.5); |
|
data = data.sort((o1, o2) => { |
|
return o1['level'] - o2['level']; |
|
}); |
|
|
|
|
|
let arr = []; |
|
for(let i = 0; i < data.length; i ++){ |
|
arr.push(data[i].word); |
|
} |
|
|
|
res.send({ |
|
code: 200, |
|
message: 'Get data successfully!', |
|
data: (req.query.hasOwnProperty('type') && req.query.type == 'obj')?data : arr |
|
}); |
|
|
|
return; |
|
} |
|
res.send({ |
|
code: 500, |
|
message: 'Illegal email params!!' |
|
}); |
|
}); |
|
|
|
|
|
|
|
app.get('/upgrade/', async (req, res) => { |
|
if(req.query.hasOwnProperty('email') && req.query.hasOwnProperty('word')){ |
|
|
|
let hash = md5(req.query.email); |
|
let path = data_folder + hash + '.json'; |
|
|
|
if(!fs.existsSync(path)){ |
|
res.send({ |
|
code: 404, |
|
message: 'No such user!!' |
|
}); |
|
return; |
|
} |
|
let data = JSON.parse(fs.readFileSync(path, 'utf-8')); |
|
|
|
for(let i = 0; i < data.length; i ++){ |
|
if(data[i].word == req.query.word){ |
|
data[i]['level'] ++; |
|
|
|
fs.writeFileSync(path, JSON.stringify(data)); |
|
|
|
res.send({ |
|
code: 200, |
|
message: 'Upgrade successfully!!' |
|
}); |
|
return; |
|
} |
|
} |
|
res.send({ |
|
code: 400, |
|
message: 'No such word!!' |
|
}); |
|
return; |
|
|
|
} |
|
|
|
res.send({ |
|
code: 500, |
|
message: 'Illegal params!!' |
|
}); |
|
}); |
|
|
|
|
|
|
|
|
|
|
|
app.get('/getInfo/', async (req, res) => { |
|
if(req.query.hasOwnProperty('email') && req.query.hasOwnProperty('word')){ |
|
|
|
let hash = md5(req.query.email); |
|
let path = data_folder + hash + '.json'; |
|
|
|
if(!fs.existsSync(path)){ |
|
res.send({ |
|
code: 404, |
|
message: 'No such user!!' |
|
}); |
|
return; |
|
} |
|
let data = JSON.parse(fs.readFileSync(path, 'utf-8')); |
|
|
|
for(let i = 0; i < data.length; i ++){ |
|
if(data[i].word == req.query.word){ |
|
|
|
fs.writeFileSync(path, JSON.stringify(data)); |
|
|
|
res.send({ |
|
code: 200, |
|
message: 'Info found successfully!!', |
|
data: data[i].level |
|
}); |
|
return; |
|
} |
|
} |
|
res.send({ |
|
code: 400, |
|
message: 'No such word!!' |
|
}); |
|
return; |
|
|
|
} |
|
|
|
res.send({ |
|
code: 500, |
|
message: 'Illegal params!!' |
|
}); |
|
});
|
|
|