128 lines
3.0 KiB
JavaScript
128 lines
3.0 KiB
JavaScript
const fs = require('fs');
|
|
const ftp = require('ftp');
|
|
const path = require('path');
|
|
const client = new ftp();
|
|
|
|
function changeMD(url) {
|
|
var str = ''
|
|
if (url.indexOf('s2c') != -1) {
|
|
str = `
|
|
## [返回上一级](README.md)
|
|
|
|
## 目录
|
|
|
|
`
|
|
} else if (url.indexOf('s2o') != -1) {
|
|
str = `
|
|
## [返回上一级](README.md)
|
|
## 通用说明
|
|
|
|
- 所有请求方法均为 \`POST\`
|
|
- 所有请求均需加入以下 Header :
|
|
- \`Content-Type: application/json\`
|
|
- 调用api的格式为:
|
|
- \`url: http://{ip}:{port}{path}\`
|
|
- \`body: 对应api的请求类型\`
|
|
- \`加密方式: 联系该项目的后端获取\`
|
|
- 返回值统一为:
|
|
- 请求参数校验不成功返回:
|
|
- \`data error 字符串\`
|
|
- 请求参数校验成功:
|
|
{
|
|
/**请求是否成功 */
|
|
isSucc: boolean;
|
|
/**请求的返回值 对应调用api的响应值*/
|
|
res?: any;
|
|
/**请求返回的错误信息*/
|
|
err?: any;
|
|
}
|
|
- 以向玩家发送邮件为例:
|
|
|
|

|
|

|
|
|
|
## 目录
|
|
`
|
|
}
|
|
|
|
let file = fs.readFileSync(url, 'utf-8');
|
|
file = file.replace(/^# TSRPC API 接口文档(.|\n)*^## 目录/gm, str);
|
|
fs.writeFileSync(url, file);
|
|
}
|
|
|
|
changeMD('doc/s2c/tsapi.md');
|
|
changeMD('doc/s2o/tsapi.md');
|
|
|
|
client.on('ready', async () => {
|
|
console.log('ftp client is ready');
|
|
|
|
await cd('document/serverDoc/doc/heijiao');
|
|
let { err, files } = await list();
|
|
console.log(files);
|
|
for (let file of files) {
|
|
await del(file.name)
|
|
}
|
|
await put('doc/s2c/tsapi.md', 's2c.md');
|
|
await put('doc/s2o/tsapi.md', 's2o.md');
|
|
|
|
client.destroy();
|
|
});
|
|
|
|
client.on('close', () => {
|
|
console.log('ftp client has close')
|
|
});
|
|
|
|
client.on('end', () => {
|
|
console.log('ftp client has end')
|
|
});
|
|
|
|
client.on('error', (err) => {
|
|
console.log('ftp client has an error : ' + JSON.stringify(err))
|
|
});
|
|
|
|
client.connect({
|
|
host: '10.0.1.20',
|
|
port: '21',
|
|
user: 'administrator',
|
|
password: ']v)CnD~r|yl[7??22uTI',
|
|
keepalive: 1000
|
|
});
|
|
|
|
//列出目标目录
|
|
async function list() {
|
|
return new Promise((resolve, reject) => {
|
|
client.list((err, files) => {
|
|
resolve({ err: err, files: files });
|
|
})
|
|
});
|
|
}
|
|
|
|
//切换目录
|
|
async function cd(dirPath) {
|
|
return new Promise(res => {
|
|
client.cwd(dirPath, (err, dir) => {
|
|
res({ err: err, dir: dir })
|
|
})
|
|
});
|
|
}
|
|
|
|
//删除
|
|
async function del(path) {
|
|
return new Promise(res => {
|
|
client.rmdir(path, (err, dir) => {
|
|
|
|
res({ err: err, dir: dir })
|
|
})
|
|
});
|
|
}
|
|
|
|
//将文件上传到ftp目标地址
|
|
async function put(currentFile, targetFilePath) {
|
|
const rs = fs.createReadStream(currentFile);
|
|
|
|
return new Promise((resolve, reject) => {
|
|
client.put(rs, targetFilePath, (err) => {
|
|
resolve({ err: err });
|
|
})
|
|
});
|
|
} |