Commit be8b56b8 by 张云飞

zyf

parent 075ceda3
...@@ -18,7 +18,6 @@ class IcpGenerateTask extends TaskBase { ...@@ -18,7 +18,6 @@ class IcpGenerateTask extends TaskBase {
async subBeforeTask(params) { async subBeforeTask(params) {
//创建目录,判断文件目录是否存在,不存在就创建 /tmp/icp //创建目录,判断文件目录是否存在,不存在就创建 /tmp/icp
var icpPath = '/tmp/icp' var icpPath = '/tmp/icp'
if (!fs.existsSync(icpPath)) { if (!fs.existsSync(icpPath)) {
...@@ -43,6 +42,43 @@ class IcpGenerateTask extends TaskBase { ...@@ -43,6 +42,43 @@ class IcpGenerateTask extends TaskBase {
// console.log(error); // console.log(error);
return; return;
} }
try {
var that = this;
var bucketandregion = await this.getBucketRegion(that.cosgetsecreturl)
var bucket = bucketandregion.bucket; /* 必须 */
var region = bucketandregion.region; /* 必须 */
var cos = new COS({
getAuthorization: function (options, callback) {
// 异步获取临时密钥
request({
url: that.cosgetsecreturl,
data: {
// 可从 options 取需要的参数
// Bucket: 'test-1258715722', /* 必须 */
// Region: 'ap-beijing', /* 必须 */
}
}, function (err, response, body) {
try {
var resultdata = JSON.parse(body);
if (resultdata.status == 1) {
var data = resultdata.data;
var credentials = data.credentials;
}
} catch (e) { }
if (!data || !credentials) return console.error('credentials invalid');
callback({
TmpSecretId: credentials.tmpSecretId, // 临时密钥的 tmpSecretId
TmpSecretKey: credentials.tmpSecretKey, // 临时密钥的 tmpSecretKey
XCosSecurityToken: credentials.sessionToken, // 临时密钥的 sessionToken
ExpiredTime: data.expiredTime, // 临时密钥失效时间戳,是申请临时密钥时,时间戳加 durationSeconds
});
});
}
});
} catch (error) {
return;
}
//遍历数据 //遍历数据
var datalist = materiadata; var datalist = materiadata;
for (var j = 0; j < datalist.length; j++) { for (var j = 0; j < datalist.length; j++) {
...@@ -627,44 +663,11 @@ class IcpGenerateTask extends TaskBase { ...@@ -627,44 +663,11 @@ class IcpGenerateTask extends TaskBase {
"url": "" "url": ""
} }
//把打包文件上传到cos //把打包文件上传到cos
var bucket = 'test-1258715722'; /* 必须 */
var begion = 'ap-beijing'; /* 必须 */
var that = this; var that = this;
var cos = new COS({
getAuthorization: function (options, callback) {
// 异步获取临时密钥
request({
url: that.cosgetsecreturl,
data: {
// 可从 options 取需要的参数
// Bucket: 'test-1258715722', /* 必须 */
// Region: 'ap-beijing', /* 必须 */
}
}, function (err, response, body) {
try {
var resultdata = JSON.parse(body);
if (resultdata.status == 1) {
var data = resultdata.data;
var credentials = data.credentials;
Bucket = credentials.tmpBucket;
Region = credentials.tmpRegion;
}
} catch (e) { }
if (!data || !credentials) return console.error('credentials invalid');
callback({
TmpSecretId: credentials.tmpSecretId, // 临时密钥的 tmpSecretId
TmpSecretKey: credentials.tmpSecretKey, // 临时密钥的 tmpSecretKey
XCosSecurityToken: credentials.sessionToken, // 临时密钥的 sessionToken
ExpiredTime: data.expiredTime, // 临时密钥失效时间戳,是申请临时密钥时,时间戳加 durationSeconds
});
});
}
});
var getParam = await new Promise(function (resv, rej) { var getParam = await new Promise(function (resv, rej) {
cos.putObject({ cos.putObject({
Bucket: bucket, /* 必须 */ Bucket: bucket, /* 必须 */
Region: begion, /* 必须 */ Region: region, /* 必须 */
Key: zipdir, /* 必须 */ Key: zipdir, /* 必须 */
Body: fs.createReadStream(zipdir), Body: fs.createReadStream(zipdir),
}, function (err, data) { }, function (err, data) {
...@@ -681,12 +684,15 @@ class IcpGenerateTask extends TaskBase { ...@@ -681,12 +684,15 @@ class IcpGenerateTask extends TaskBase {
}); });
if (getParam) { if (getParam) {
resultJson.url = 'http://' + getParam; resultJson.url = 'http://' + getParam;
var icpUpMaterialurl = this.icpMaterialurl + '/web/delivery/materialCtl/updateUrl'; console.log(resultJson);
//请求返回接口,传输上传接口 // var icpUpMaterialurl = this.icpMaterialurl + '/web/delivery/materialCtl/updateUrl';
await this.restclient.execPost(resultJson, icpUpMaterialurl); // //请求返回接口,传输上传接口
// await this.restclient.execPost(resultJson, icpUpMaterialurl);
} }
} catch (error) { } catch (error) {
console.log(error);
continue; continue;
} }
...@@ -701,14 +707,14 @@ class IcpGenerateTask extends TaskBase { ...@@ -701,14 +707,14 @@ class IcpGenerateTask extends TaskBase {
var id_dir = '/tmp/icp/' + Id; var id_dir = '/tmp/icp/' + Id;
//压缩包 //压缩包
var id_zip = id_dir + '.zip'; var id_zip = id_dir + '.zip';
if (fs.existsSync(id_dir)) { // if (fs.existsSync(id_dir)) {
// delete // // delete
child_process.spawn('rm', ['-r', id_dir]); // child_process.spawn('rm', ['-r', id_dir]);
} // }
if (fs.existsSync(id_zip)) { // if (fs.existsSync(id_zip)) {
child_process.spawn('rm', [id_zip]); // child_process.spawn('rm', [id_zip]);
} // }
} }
} }
...@@ -716,9 +722,11 @@ class IcpGenerateTask extends TaskBase { ...@@ -716,9 +722,11 @@ class IcpGenerateTask extends TaskBase {
async downFile(data, dir) { async downFile(data, dir) {
// console.log(data, dir); // console.log(data, dir);
//下载文件 //下载文件
var bucket = 'test-1258715722'; /* 必须 */
var region = 'ap-beijing'; /* 必须 */
var that = this; var that = this;
var bucketandregion = await this.getBucketRegion(that.cosgetsecreturl)
var bucket = bucketandregion.bucket; /* 必须 */
var region = bucketandregion.region; /* 必须 */
var cos = new COS({ var cos = new COS({
getAuthorization: function (options, callback) { getAuthorization: function (options, callback) {
// 异步获取临时密钥 // 异步获取临时密钥
...@@ -735,8 +743,6 @@ class IcpGenerateTask extends TaskBase { ...@@ -735,8 +743,6 @@ class IcpGenerateTask extends TaskBase {
if (resultdata.status == 1) { if (resultdata.status == 1) {
var data = resultdata.data; var data = resultdata.data;
var credentials = data.credentials; var credentials = data.credentials;
Bucket = credentials.tmpBucket;
Region = credentials.tmpRegion;
} }
} catch (e) { } } catch (e) { }
if (!data || !credentials) return console.error('credentials invalid'); if (!data || !credentials) return console.error('credentials invalid');
...@@ -749,6 +755,7 @@ class IcpGenerateTask extends TaskBase { ...@@ -749,6 +755,7 @@ class IcpGenerateTask extends TaskBase {
}); });
} }
}); });
var downfiles = data; var downfiles = data;
for (var i = 0; i < downfiles.length; i++) { for (var i = 0; i < downfiles.length; i++) {
var filedata = downfiles[i]; var filedata = downfiles[i];
...@@ -784,6 +791,31 @@ class IcpGenerateTask extends TaskBase { ...@@ -784,6 +791,31 @@ class IcpGenerateTask extends TaskBase {
}); });
}) })
} }
//获取账号和地域信息
async getBucketRegion(cosgetsecreturl) {
var br = {
bucket: 'csig-brgicp-dev-1258344699', /* 必须 */
region: 'ap-guangzhou', /* 必须 */
}
try {
var rtn = await this.restclient.execPost({}, cosgetsecreturl);
if (!rtn || !rtn.stdout) {
return br;
}
var result = JSON.parse(rtn.stdout);
if (result.status == 1) {
var credentials = result.data.credentials;
br.bucket = credentials.tmpBucket;
br.region = credentials.tmpRegion;
return br;
} else {
return br;
}
} catch (error) {
// console.log(error);
return br;
}
}
async subDoTask(params) { async subDoTask(params) {
console.log(params); console.log(params);
......
var childproc = require('child_process');
const util = require('util');
const exec = util.promisify(require('child_process').exec);
class ExecClient {
constructor() {
this.cmdPostPattern = "curl -k -H 'Content-type: application/json' -d '{data}' {url}";
this.cmdGetPattern = "curl -G -X GET '{url}'";
this.cmdPostPattern3 = "curl -k -H 'Content-type: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJvcnpaWmhXRXBKNVVFZzRZUU5uUmlyVEJXa1FQbnZ6UyIsImlhdCI6MTU5MjcwOTYzNn0.TWk_F6Tz3fRMqspoG24VSt5RiC4ldFembFYcLcAbowE' -H 'XAPPKEY: 647a68c9-da01-40d3-9763-1ffa0f64cf3f' -d '{data}' {url}";
}
async exec(cmd) {
//await后面表达式返回的promise对象,是then的语法糖,await返回then函数的返回值
//异常需要try/catch自己捕获或外部catch捕获
const {stdout, stderr} = await exec(cmd);
return {stdout, stderr};
}
async exec2(cmd) {
return exec(cmd, {encoding: "base64"});
}
FetchPostCmd(subData, url) {
var data = JSON.stringify(subData);
var cmd = this.cmdPostPattern.replace(/\{data\}/g,
data).replace(/\{url\}/g, url);
console.log(cmd);
return cmd;
}
async execPost(subData, url) {
let cmd = this.FetchPostCmd(subData, url);
var result = await this.exec(cmd);
return result;
}
FetchPostCmd3(subData, url) {
var data = JSON.stringify(subData);
var cmd = this.cmdPostPattern3.replace(/\{data\}/g,
data).replace(/\{url\}/g, url);
console.log(cmd);
return cmd;
}
async execPost3(subData, url) {
let cmd = this.FetchPostCmd3(subData, url);
var result = await this.exec(cmd);
return result;
}
async execPost2(subData, url) {
let cmd = this.FetchPostCmd(subData, url);
var result = await this.exec2(cmd);
return result;
}
FetchGetCmd(subData, url) {
var cmd = this.cmdGetPattern.replace(
/\{data\}/g, subData).replace(/\{url\}/g, url);
console.log(cmd);
return cmd;
}
async execGet(subData, url) {
let cmd = this.FetchGetCmd(subData, url);
console.log(cmd);
var result = await this.exec(cmd);
return result;
}
async execGet2(subData, url) {
let cmd = this.FetchGetCmd(subData, url);
console.log(cmd);
var result = await this.exec2(cmd);
return result;
}
async execGetTimeOut(subData, url, timeOut = 5000) {
//timeOut,单位是毫秒
let cmd = this.FetchGetCmd(subData, url);
var options = {
timeout: timeOut,
};
const {stdout, stderr} = await exec(cmd, options);
return {stdout, stderr};
}
}
module.exports = ExecClient;
// var x=new RestClient();
// x.execGet("","http://www.163.com").then(function(r){
// console.log(r.stdout);
// console.log(r.stderr);
// });
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment