Commit 13a68ae8 authored by Kamron Aroonrua's avatar Kamron Aroonrua 💬

Merge branch 'dev' into 'master'

Dev

See merge request !5
parents 09cde9fb 7f366fec
#Changelog
## [1.2.2] - 2019-03-01
### Added
- PLUGIN :: dt-pdfmaker
- PLUGIN :: dt-transform ba64script
- PLUGIN :: dt-keybuffer
## [1.2.1] - 2018-10-11
### Added
......
## Wiki
* Read Tutorial Wiki -> [Click Here](https://github.com/igridproject/node-bigstream/wiki)
\ No newline at end of file
* GitLab Repo Wiki -> [Click Here](https://git.igridproject.info/bs/node-bigstream/wikis/home)
\ No newline at end of file
......@@ -16,7 +16,8 @@ function perform_function(context,request,response){
var env = {
'type' : output_type,
'data' : data,
'meta' : meta
'meta' : meta,
'response':false
}
var script = new vm.Script("response=(" + param.condition + ")?true:false");
......
var util = require('util');
var DTPlugin = require('../dt-plugin');
function DTTask(context,request){
DTPlugin.call(this,context,request);
this.name = "keybuffer";
this.output_type = "";
}
util.inherits(DTTask,DTPlugin);
DTTask.prototype.perform = require('./perform');
module.exports = DTTask;
var vm = require('vm');
var hash = require('object-hash');
function perform_function(context,request,response){
var job_id = context.jobconfig.job_id;
var transaction_id = context.transaction.id;
var param = context.task.config.param;
var memstore = context.task.memstore
var output_type = request.input_type;
var data = request.data;
var meta = request.meta;
var out_data = {};
//keyname
//var prm_name = (param.name)?'dupkey-'+param.name:'dupkey';
var prm_name = 'dupkey';
if(param.name){
var name_env = {
'type' : output_type,
'data' : data,
'meta' : meta,
'name_posfix' : ''
}
var nscript = new vm.Script("name_posfix=`" + param.name + "`");
var ncontext = new vm.createContext(name_env);
nscript.runInContext(ncontext);
prm_name = 'keybuffer-' + name_env.name_posfix;
}
//keydata
var datakey = '_def';
if(param.key){
var env = {
'type' : output_type,
'data' : data,
'meta' : meta,
'key' : '_def'
}
var script = new vm.Script("key=`" + param.key + "`");
var context = new vm.createContext(env);
script.runInContext(context);
datakey = env.key;
if(!datakey || datakey==''){datakey='_def'}
}
//flush_if
var flush = false;
if(meta['_flush'] && meta['_flush'].toString()=='true'){flush = true}
if(param.flush_if && param.flush_if!=''){
var env = {
'type' : output_type,
'data' : data,
'meta' : meta,
'flush':false
}
var script = new vm.Script("flush=(" + param.flush_if + ")?true:false");
var context = new vm.createContext(env);
script.runInContext(context);
flush = (env.flush==true)?true:false;
}
if(typeof data == 'object' && data instanceof Buffer)
{
data = null;
}
memstore.getItem(prm_name,function(err,value){
if(err){return response.error("memstore error");}
var kbuffer = {};
if(value && flush==false)
{
kbuffer = value;
}
kbuffer[datakey] = data;
out_data = kbuffer;
memstore.setItem(prm_name,kbuffer,function(err){})
response.success(out_data,{'meta':meta,'output_type':output_type});
});
// memstore.setItem('lasttransaction',transaction_id,function(err){
// response.success(data);
// });
// memstore.getItem('lasttransaction',function(err,value){
// response.success(value);
// });
//response.reject();
//response.error("error message")
}
module.exports = perform_function;
var util = require('util');
var DTPlugin = require('../dt-plugin');
function DTTask(context,request){
DTPlugin.call(this,context,request);
this.name = "pdfmaker";
this.output_type = "";
}
util.inherits(DTTask,DTPlugin);
DTTask.prototype.perform = require('./perform');
module.exports = DTTask;
{
"name": "dt-pdfmaker",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"pdfmake": "^0.1.38"
}
}
var vm = require('vm');
var ctx = require('../context');
var Utils = ctx.getLib('lib/util/plugin-utils');
var pdfMake = require('pdfmake/build/pdfmake.js')
var pdfFonts = require('./vfs_fonts.js');
pdfMake.vfs = pdfFonts.pdfMake.vfs;
pdfMake.fonts = {
THSarabunNew : {
normal: 'THSarabunNew.ttf',
bold: 'THSarabunNew-Bold.ttf',
italics: 'THSarabunNew-Italic.ttf',
bolditalics: 'THSarabunNew-BoldItalics.ttf'
}
};
function perform_function(context,request,response){
var job_id = context.jobconfig.job_id;
var transaction_id = context.transaction.id;
var param = context.task.config.param;
var memstore = context.task.memstore
var in_type = request.input_type;
var in_data = request.data;
var in_meta = request.meta;
var mapscr = Utils.parse_script_param(param.script);
var doc = in_data;
if(typeof param.document == 'object'){
doc = param.document;
}
if(typeof param.document == 'string'){
mapscr = mapscr + "; document=" + param.document;
}
var mapenv = {
'src' : {
'type' : in_type,
'data' : in_data,
'meta' : in_meta
},
'type' : in_type,
'data' : in_data,
'meta' : in_meta,
'document':doc
}
var script = new vm.Script(mapscr);
var context = new vm.createContext(mapenv);
script.runInContext(context);
var meta = mapenv.meta;
var dd = mapenv.document;
var output_type = 'binary';
if(!dd.defaultDtyle){
dd.defaultStyle = {
font: 'THSarabunNew'
}
}else{
dd.defaultStyle.font = 'THSarabunNew';
}
var pdfDocGenerator = pdfMake.createPdf(dd);
pdfDocGenerator.getBase64((buf) => {
var data = Buffer.from(buf,'base64');
response.success(data,{'meta':meta,'output_type':output_type});
});
}
module.exports = perform_function;
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -14,9 +14,10 @@ function perform_function(context,request,response){
var mapscr = Utils.parse_script_param(param.script);
var datascr = param.text ;
var ba64script = param.ba64script;
if(param.text){
mapscr = mapscr + "; data=`" + param.text + "`";
if(datascr){
mapscr = mapscr + "; data=`" + datascr + "`";
}
var mapenv = {
......@@ -25,13 +26,21 @@ function perform_function(context,request,response){
'data' : in_data,
'meta' : in_meta
},
'_env':{},
'type' : in_type,
'data' : in_data,
'meta' : in_meta
}
var script = new vm.Script(mapscr);
var context = new vm.createContext(mapenv);
if(ba64script && typeof ba64script == 'string'){
var strScript = Buffer.from(ba64script, 'base64').toString('utf8');
var b64s = new vm.Script(strScript);
b64s.runInContext(context);
}
var script = new vm.Script(mapscr);
script.runInContext(context);
var data = mapenv.data;
......
......@@ -7,7 +7,7 @@ function perform_function(context,request,response){
var in_type = request.input_type;
var in_data = request.data;
var in_meta = request.meta;
var in_meta = request.meta || {};
//parameter
//prm_size :: int
......@@ -42,9 +42,10 @@ function perform_function(context,request,response){
response.reject();
}else{
ret = ret.slice(prm_size * -1);
var meta = {'_size':ret.length};
var meta = in_meta;
meta['_wsize'] = ret.length;
memstore.setItem(prm_name,ret);
response.success(ret,{'meta':meta,'in_meta':in_type});
response.success(ret,{'meta':meta,'output_type':in_type});
}
});
......
<h2>Test Download</h2>
<a href="http://bigmaster.igridproject.info:19080/v0.1/storage2/igrid.env/objects?sizelimit=200&output=stream">bigmaster</a>
<a href="http://lab1.igridproject.info:19080/v0.1/storage/igrid.env/objects?sizelimit=200&output=stream">lab1</a>
\ No newline at end of file
{
"version":"1.2.1",
"build":"201810111600"
"version":"1.2.2",
"build":"201902121700"
}
\ No newline at end of file
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