function serve() {
	var configstr = system.stdin.readLine();
	if(configstr) {
		var line;
		var timeline = parseInt(configstr);
		var width = parseInt(system.stdin.readLine());
		var height = parseInt(system.stdin.readLine());
		if(width < 0) {
			width = 600;
		}
		if(height < 0) {
			height = 400;
		}

		var themeStr = system.stdin.readLine();
		while((line = system.stdin.readLine()) != "___Lang:start") {
			themeStr += line;
		}
		var langStr = system.stdin.readLine();
		while((line = system.stdin.readLine()) != "___Config:start") {
			langStr += line;
		}
		configstr = system.stdin.readLine();
		while((line = system.stdin.readLine()) != "___VaadinSVGGenerator:run") {
			configstr += line;
		}

		try {
			var svgresponse = render(configstr, themeStr, langStr, width, height, timeline);
			console.log(svgresponse);
			setTimeout(serve(), 5);
		} catch (e) {
			console.log("Render failed:\n" + e);
		}
	} else {
		setTimeout(serve(), 5);
	}
}
Beispiel #2
0
function stdInRead()
{
	try {
		
		//stdIn is blocking and will hang the process
		//there is not yet a Async method available, so I have opted
		//to send a delimitor to stdIn, once that delimiter has been 
		//reached there is no more data to read. That way we never end up blocked

		if (classData.initialized === true) {
			var delimitor		= "[" + getUUID() + "]";
			fSystem.write(classData.stdIn.path, delimitor, 'a');
		} else {
			//the init command will always end in 2 new lines
			var delimitor		= "\n\n";
		}
		
		var dLen		= delimitor.length;

		var newData		= "";
		var done		= false;
		var i=1;
		while(done === false) {
			i++;
			
			newData	+= system.stdin.read(1);
			
			if (i > dLen) {
				var dPos 	= newData.indexOf(delimitor);
				if (dPos != -1) {
					var done		= true;
					if (dPos == 0) {
						return null;
					} else {
						return newData.substring(0, dPos);
					}
				}
			}
		}

	} catch(e) {
		var eMsg	= "Failed to read from stdIn";
		writeError(e, eMsg);
	}
}
Beispiel #3
0
/**
 * Calls readLine() and blocks until a message is ready
 */
function read() {
  const line = system.stdin.readLine();
  if (line) {
    if (line === NOOP) {
      system.stdout.writeLine(`>${NOOP}`);
      setTimeout(read, 100);
      return;
    }
    const command = JSON.parse(line, (key, value) => {
      if (
        value
        && typeof value === 'string'
        && value.substr(0, 8) === 'function'
        && value.indexOf('[native code]') === -1
      ) {
        const startBody = value.indexOf('{') + 1;
        const endBody = value.lastIndexOf('}');
        const startArgs = value.indexOf('(') + 1;
        const endArgs = value.indexOf(')');

        // eslint-disable-next-line no-new-func
        return new Function(
          value.substring(startArgs, endArgs),
          value.substring(startBody, endBody),
        );
      }
      return value;
    });

    // Call here to look for transform key
    transform(command.params);

    try {
      executeCommand(command);
    } catch (e) {
      command.error = e.message;
      completeCommand(command);
    } finally {
      setTimeout(read, 0);
    }
  }
}
Beispiel #4
0
function loop() {
    var line = stdin.readLine();
    var message;

    if (line) {
      try {
          message = JSON.parse(line);
      } catch (e) {
          throw new Error('Could not parse "' + line + '" as JSON');
      }

      stream.emit('data', line);

      if (message.method === 'run') {
          return;
      }
    }

    setTimeout(loop, STDIN_POLL_INTERVAL);
}
Beispiel #5
0
function convert(resize) {
    var page = webpage.create();
    var sourceBase64 = system.stdin.readLine();

    page.open(PREFIX + sourceBase64, function (status) {
        if (status !== "success") {
            console.error("Unable to load the source file.");
            phantom.exit();
            return;
        }

        try {
            if (resize !== "undefined") {
                resize = JSON.parse(resize);
                setSVGDimensions(page, resize.width, resize.height);
            }

            var dimensions = getSVGDimensions(page);
            if (!dimensions) {
                console.error("Width or height could not be determined from either the source file or the supplied " +
                              "dimensions");
                phantom.exit();
                return;
            }

            page.viewportSize = {
                width: dimensions.width,
                height: dimensions.height
            };
        } catch (e) {
            console.error("Unable to calculate or set dimensions.");
            console.error(e);
            phantom.exit();
            return;
        }

        var result = "data:image/png;base64," + page.renderBase64("PNG");
        system.stdout.write(result);
        phantom.exit();
    });
}
Beispiel #6
0
/*初始化*/
function init() {
    //解析页面输入参数
    pageParams = JSON.parse(system.stdin.readLine());
    //不加载图片
    page.settings.loadImages = false;
    //超时时间 5000ms
    page.settings.resourceTimeout = 5000;
    //加载错误事件
    phantom.onError = function (msg, trace) {
        console.error(msg, trace);
        phantom.exit(1);
    }
    /*测试环境下输出页面控制台log*/
    if (pageParams.isDebug) {
        page.onConsoleMessage = function (msg) {
            console.log('PCL:', msg);
        };
    }
    //loadCookies(page, pageParams.url);
    open();
}
Beispiel #7
0
/**
 * Calls readLine() and blocks until a message is ready
 */
function read() {
    let line = system.stdin.readLine();
    if (line) {
        if (line === NOOP) {
            // If sender has done a noop, it means sender is not busy so lets give phantom more time
            setTimeout(function() {
                // This will reset isNoOpInProgress at sender, so if it wants to NOOP again it can.
                system.stdout.writeLine('>' + NOOP);
                read();
            }, 100);
            return;
        }
        let command = JSON.parse(line, function(key, value) {
            if (value
                && typeof value === 'string'
                && value.substr(0, 8) === 'function'
                && value.indexOf('[native code]') === -1) {
                const startBody = value.indexOf('{') + 1;
                const endBody = value.lastIndexOf('}');
                const startArgs = value.indexOf('(') + 1;
                const endArgs = value.indexOf(')');

                // eslint-disable-next-line no-new-func
                return new Function(value.substring(startArgs, endArgs), value.substring(startBody, endBody));
            }
            return value;
        });

        // Call here to look for transform key
        transform(command.params);

        try {
            executeCommand(command);
        } catch (e) {
            command.error = e.message;
            completeCommand(command);
        }

    }
}
var loop = function() {
  var line = system.stdin.readLine();
  if (!line.trim()) return phantom.exit(0);

  try {
    line = JSON.parse(line);
  } catch (err) {
    return phantom.exit(1);
  }

  if (!page) page = webpage.create();

  if (line.maxRenders) maxRenders = line.maxRenders;
  page.viewportSize = {
    width: line.width || 1280,
    height: line.height || 960
  };

  page.paperSize = {
    format: line.paperFormat || 'A4',
    orientation: line.orientation || 'portrait',
    margin: line.margin || '0cm'
  };

  if (line.userAgent) page.settings.userAgent = line.userAgent;

  if (line.crop) {
    page.clipRect = {
      width: line.crop.width || page.viewportSize.width,
      height: line.crop.height || page.viewportSize.height,
      top: line.crop.top || 0,
      left: line.crop.left || 0
    }
  }

  var onerror = function() {
    line.success = false;
    console.log(JSON.stringify(line));
    page = null;
    loop();
  }

  page.open(line.url, function(requestStatus) {
    if (requestStatus !== 'success') return onerror();

    var render = function() {
      setTimeout(function() {
        if (line.printMedia) forcePrintMedia();
        page.render(line.filename, {format:line.format || 'png'});
        page = null;
        line.success = true;
        console.log(JSON.stringify(line));
        if (maxRenders && renders++ >= maxRenders) phantom.exit(0);
        loop();
      }, 0);
    };

    var waitAndRender = function() {
      var timeout = setTimeout(function() {
        page.onAlert('webpage-error');
      }, 10000);

      var rendered = false;
      page.onAlert = function(msg) {
        if (msg !== 'webpage-renderable' && msg !== 'webpage-error') return;
        if (rendered) return;
        rendered = true;
        clearTimeout(timeout);

        if (msg === 'webpage-renderable') render();
        else onerror();
      };

      page.evaluate(function(expects) {
        if (window.renderable === expects) return alert('webpage-renderable');
        if (window.renderable) return alert('webpage-error');

        var renderable = false;
        Object.defineProperty(window, 'renderable', {
          get: function() {
            return renderable;
          },
          set: function(val) {
            renderable = val;
            if (renderable === expects) alert('webpage-renderable');
            else alert('webpage-error');
          }
        });
      }, line.expects);
    };

    var renderable = page.evaluate(function() {
      return window.renderable;
    });

    if (renderable === false && !line.expects) line.expects = true;
    if (line.expects === renderable) return render();
    if (line.expects) return waitAndRender();
    render();
  });
};
var loop = function() {
  var line = system.stdin.readLine();
  if (!line.trim()) return phantom.exit(0); 

  try {
    line = JSON.parse(line);
  } catch (err) {
    return phantom.exit(1);
  }

  if (!page) page = createWebPage(line.id);
  else page.id = line.id;

  if (line.cookies && line.cookies.length > 0) {
    line.cookies.forEach(function (c) {
      phantom.addCookie(c);
    });
  }

  // inject polyfills or other scripts if necessary
  if (line.injectJs && line.injectJs.length > 0) {
    page.onInitialized = function () {
      line.injectJs.forEach(function (path) {
        page.log({
          type: 'injectedScript',
          data: {path: path}
        });
        page.injectJs(path);
      });
    };
  }

  if (line.maxRenders) maxRenders = line.maxRenders;
  page.viewportSize = {
    width: line.width || 1280,
    height: line.height || 960
  };

  page.paperSize = line.paperSize ||
    {
      format: line.paperFormat || 'A4',
      orientation: line.orientation || 'portrait',
      margin: line.margin || '0cm'
    };

  if (line.userAgent) page.settings.userAgent = line.userAgent;

  if (line.headers) page.customHeaders = line.headers;

  if (line.crop) {
    page.clipRect = {
      width: line.crop.width || page.viewportSize.width,
      height: line.crop.height || page.viewportSize.height,
      top: line.crop.top || 0,
      left: line.crop.left || 0
    }
  }

  if(line.javascriptEnabled === false) page.settings.javascriptEnabled = false;

  if(line.requestWhitelist) {
    page.onResourceRequested = function(reqData, networkRequest) {
      if(line.url === reqData.url) return; // allow self-request
      var abort = true;
      line.requestWhitelist.forEach(function(rgxp) {
        var r = new RegExp(rgxp, 'gi');
        if(r.test(reqData.url)) abort = false;
      });
      if(abort) {
        console.log('Deny network request to', reqData.url);
        networkRequest.abort();
      }
    }
  }


  var onerror = function(message) {
    page.log(message);
    line.success = false;
    console.log(JSON.stringify(line));
    page = null;
    loop();
  }

  page.open(line.url, function(requestStatus) {
    if (requestStatus !== 'success') return onerror({
      type: 'pageFetchError',
      data: {status: requestStatus}
    });

    var render = function() {
      setTimeout(function() {
        if (line.printMedia) forcePrintMedia();
        page.render(line.filename, {format:line.format || 'png', quality:line.quality || 100});
        page = null;
        line.success = true;
        console.log(JSON.stringify(line));
        if (maxRenders && renders++ >= maxRenders) return phantom.exit(0);
        loop();
      }, 0);
    };

    var waitAndRender = function() {
      var timeout = setTimeout(function() {
        page.onAlert('webpage-error');
      }, line.timeout);

      var rendered = false;
      page.onAlert = function(msg) {
        if (msg !== 'webpage-renderable' && msg !== 'webpage-error') return;
        if (rendered) return;
        rendered = true;
        clearTimeout(timeout);

        if (msg === 'webpage-renderable') render();
        else onerror({
          type: 'expectError',
          data: {expects: line.expects}
        });
      };

      page.evaluate(function(expects) {
        if (window.renderable === expects) return alert('webpage-renderable');
        if (window.renderable) return alert('webpage-error');

        var renderable = false;
        Object.defineProperty(window, 'renderable', {
          get: function() {
            return renderable;
          },
          set: function(val) {
            renderable = val;
            if (renderable === expects) alert('webpage-renderable');
            else alert('webpage-error');
          }
        });
      }, line.expects);
    };

    var renderable = page.evaluate(function() {
      return window.renderable;
    });

    if (renderable === false && !line.expects) line.expects = true;
    if (line.expects === renderable) return render();
    if (line.expects) return waitAndRender();
    render();
  });
};
Beispiel #10
0
var system = require('system');
var fs = require('fs');

var code = null;

if (system.args.length !== 3) {
    console.log('Usage: render.js template outpath/outfile ');
    phantom.exit();
} else {
    //  this blocks even in phantom.exit case
    // yeah...
    code = system.stdin.read(1024 * 1024);
}


//console.log(code);
var template = system.args[1];
var outfile = system.args[2];

// change the working directory to the current library path
fs.changeWorkingDirectory(phantom.libraryPath);

var templateContent = fs.read(template + ".html");
phantom.injectJs('shared/handlebars.js');
var handlebar = Handlebars.compile(templateContent);

var renderedTemplate = handlebar({code: code});

//var temporary_outfile = "tmp_render_outfile.html";
var temporary_outfile = outfile.split("/").pop().split(".")[0] + "-" + system.pid + ".html";
//console.log(temporary_outfile);
Beispiel #11
0
 processCmd(cmd,data,function(){system.stdin.readLineAsync(onInput);},true);
Beispiel #12
0
// ####################################
// CASTERJS FUNCTION
// ####################################

var utils = require('utils');
var system = require('system');
var casper = require("casper").create({
	// pageSettings: {
	// 	loadImages:  false,         
	// 	loadPlugins: false          
	// },
	//logLevel: "debug",             
	verbose: true                   
});

var line = system.stdin.readLine();
var pages = JSON.parse( line );

var TEST_TYPE = {
	move : 1,
	iframe_move : 2,
	screen_shot : 3,
	check : 4,
	form_send : 5
}

casper.on("load.started", function() {
	start = new Date();
});

casper.on("load.finished", function() {
Beispiel #13
0
 * Copyright(c) 2014 Jan Blaha
 *
 * Phantomjs script responsible for converting html into pdf.
 */
/* globals phantom */


var webpage = require('webpage');
var webserver = require('webserver').create();
var system = require('system');
var fs = require('fs');

var page = webpage.create();
page.viewportSize = { width: 600, height: 600 };

var port = system.stdin.readLine();

var service = webserver.listen('127.0.0.1:' + port, function (req, res) {
    try {

        res.statusCode = 200;
        res.setHeader('Content-Type', 'application/json');

        var body = JSON.parse(req.post);
        page.settings.javascriptEnabled = body.options.blockJavaScript !== true;

        page.onResourceRequested = function (request, networkRequest) {
            if (request.url.lastIndexOf(body.url, 0) === 0) {
                return;
            }
Beispiel #14
0
function step() {
    var line = sys.stdin.readLine();
    var cmd = null, args;

    var responded = false;
    var timeout = null;
    var check = null;

    try {
        cmd = JSON.parse(line || "null");
    } catch(ex) {
        sys.stderr.writeLine("ERROR: Couldn't parse message: " + String(ex));
    }

    if (!cmd) {
        phantom.exit(0);
        return;
    }

    /* Timeout is cleared when responding */
    timeout = window.setTimeout(function() {
        if (check)
            check();
        if (responded)
            sys.stderr.writeLine("WARNING: " + line + " was true after timeout, add more checkpoints");
        else
            respond({ error: "timeout" + messages });
    }, cmd.timeout || 60 * 1000);

    /* This function is called when functions want to respond */
    function respond(out) {
        var line = JSON.stringify(out);
        if (responded) {
            sys.stderr.writeLine("WARNING: Already responded, discarding result: " + line);
            return;
        }

        window.clearTimeout(timeout);
        page.onError = null;
        timeout = null;
        messages = "";
        responded = true;
        onCheckpoint = null;
        loadFailure = null;
        loadStatus = null;

        sys.stdout.writeLine(line);
        step();
    };

    page.onError = function(msg, trace) {
        var i, backtrace = "";
        for (i = 0; i < trace.length; i++)
            backtrace += "\n" + trace[i].file + " " + trace[i].line + " " + trace[i].function;
        sys.stderr.writeLine("Page error: " + msg + backtrace);
        respond({ error: msg });
    };

    if (cmd.cmd in driver) {
        args = (cmd.args || []).slice();
        args.unshift(respond);
        check = driver[cmd.cmd].apply(driver, args);
    } else {
        respond({ error: "No such method defined: " + cmd.cmd });
    }

    /* Caller has not responded */
    if (!responded && check) {
        check();
        if (!responded)
            onCheckpoint = check;
    }
}
Beispiel #15
0
function getPassword() {
	system.stdout.write('Please enter passwrod:');
	var password = system.stdin.readLine();
	// system.stdout.write('\033[1APlease enter password:                      \n');
	return password;
}
Beispiel #16
0
function getUsername() {
	system.stdout.write('Please enter username:'******'\033[1APlease enter username:                      \n');
	return username;
}
Beispiel #17
0
var system = require("system");

if (system.args.length < 3) {
	console.log("Wrong argument count. Call as 'phantomjs phantomjs-my-mind.js url output.png [DATA]'.");
	phantom.exit();
}

var url = system.args[1];
var output = system.args[2];
var dataSource = system.args[3];
var data = null;

if (dataSource) {
	try {
		if (dataSource == "-") {
			data = system.stdin.read();
		} else {
			data = require("fs").read(dataSource);
		}
	} catch (e) {
		console.log(e);
		phantom.exit();
	}
}

var page = require("webpage").create();
page.onAlert = function(msg) { console.log(msg); }
page.open(url, function() {
	page.evaluate(function(dataSource, data) {
		/* switch to print mode */
		document.querySelector("link[media~=print]").media = "all"; 
page.open(xurl, function () {
    console.log('Hello, world!');
    //page.render('example.png');
    if(status === "success") {
        //page.render('example.png');
    }
    var title = page.evaluate(function() {
        return document.title;
    });

    var ua = page.evaluate(function () {
        return document.getElementById('cartype').value ;//textContent;
    });
    var ua2 = page.evaluate(function () {
        var data= {carid:'浙BD792X',carno: '065026',cartype: '02'}
        $("#carid").val(data.carid);
        $("#carno").val(data.carno);
        $("#cartype").val(data.cartype);
        $("#carno").val("065026");
        return $("#carno").val();
    });

    var ua3 = page.evaluate(function () {
        function getRandSequence(size){
            var Num="";
            var size=size||15;
            for(var i=0;i<size;i++)
            {
                Num+=Math.floor(Math.random()*10);
            }
            return Num;
        }
        var iic=getRandSequence();
        $("#kaptchaImage").attr("src","/was/overloadIllegalQueryIdent.jpg?iic="+iic);
        return iic;
    });
    system.stdout.writeLine('imput image key: (ctrl+D to end)');
    var imgkey = system.stdin.read(4);

    var ua4 = page.evaluate(function (imgkey,b) {
        $("#yzm").val(imgkey);
        return 'img key is:'+imgkey;
    },imgkey,'b');
    console.log(ua4);
    setTimeout(function(){
        system.stdout.writeLine('wait for image key: (ctrl+D to end) 5s');
        var ua5 = page.evaluate(function () {
            $('input[name="submitaasaa"]').trigger("click")
            return 'submit!'
        });
        console.log(ua5);
        setTimeout(function(){
            system.stdout.writeLine('wait for post: (ctrl+D to end) 20s');
            page.render('example.png');
            system.stdout.writeLine('--------------end');
        },20000);
    },5000);




    //console.log('----------end');

    /*
    page.evaluate(function() {
        console.log('H2222orld!');
        //$("button").click();
        var data= {carid:'浙BD792X',carno: '065026',cartype: '02'}
        $("#carid").val(data.carid);
        $("#carno").val(data.carno);
        $("#cartype").val(data.cartype);
        page.render('example.png');
        console.log('H33333ld!');
        phantom.exit();
    });
    */

});
'use strict';

var fs        = require('fs');
var system    = require('system');
var webpage   = require('webpage');
var webserver = require('webserver');

if (system.args.length != 3 && system.args.length != 4) {
    system.stdout.writeLine('Usage: ' + system.args[0] + ' <[host:]port> <cache-size> [<secret>]');
    system.stdout.writeLine('If <secret> is missing, it will be read from standard input.');
    phantom.exit(64); throw '';
}

var port      = system.args[1];
var cacheSize = system.args[2];
var secret    = system.args[3] || system.stdin.readLine();

var counter   = 0;
var pageCache = [];

var adapterName = phantom.libraryPath + '/' + 'phantomjs-template-adapter.html';
var adapterHTML = fs.read(adapterName);

var renderFormats = {
    'application/pdf': 'pdf',
    'image/jpeg':      'jpeg',
    'image/png':       'png',
};

if (!secret) {
    console.warn('Warning: No secret supplied. Will accept unsigned requests!');
Beispiel #20
0
   window.setTimeout(function () {
       console.log('URI is now ' + page.url.substring(0,40) + '... .\nVerifying login...');

       if (page.url.substring(0,40) == 'https://accounts.google.com/ServiceLogin') {quit('login failed: wrong email and/or password')};
       
       if (page.url.substring(0,40) == 'https://appengine.google.com/_ah/loginfo') {
          console.log('Accepting appEngine request...');
          page.evaluate(function () {
            document.getElementById('persist_checkbox').checked = true;
            document.getElementsByTagName('form').submit();
          });
       };

       if (page.url.substring(0,40) == 'https://accounts.google.com/SecondFactor') {
          console.log('Using two-step verification, please enter your code:');
          twostep = system.stdin.readLine();
       };
   
       if (twostep) {
          page.evaluate(function (code) {
            document.getElementById('smsUserPin').value = code;
          }, twostep);
          page.evaluate(function () {
            document.getElementById('gaia_secondfactorform').submit();
          });
       };
        window.setTimeout(function () {
          page.open(area, function () {
           console.log('Authenticated successfully, starting screenshotting every ' + v + 'ms...');
            setInterval(function () {
              page.evaluate(function () {
               document.querySelector('#filters_container').style.display = 'none';
               document.querySelector('#comm').style.display = 'none';
               document.querySelector('#player_stats').style.display = 'none';
               document.querySelector('#game_stats').style.display = 'none';
               document.querySelector('#geotools').style.display = 'none';
               document.querySelector('#bottom_right_stack').style.display = 'none';
               document.querySelector('#header').style.display = 'none';
               document.querySelector('#footer').style.display = 'none';
               document.querySelector('#snapcontrol').style.display = 'none';
               //document.querySelector('div.gm-style-cc:nth-child(8)').style.display = 'none';
              });
              page.evaluate(function () {
               var hide = document.querySelectorAll('.gmnoprint');
               for (index = 0; index < hide.length; ++index) {
                 hide[index].style.display = 'none';
              }});
              
              var mySelector = "#map_canvas";
              var elementBounds = page.evaluate(function(selector) {
                var clipRect = document.querySelector(selector).getBoundingClientRect();
                return {
                  top:     clipRect.top,
                  left:     clipRect.left,
                  width:  clipRect.width,
                  height: clipRect.height
                };
               }, mySelector);
              var oldClipRect = page.clipRect;
              page.clipRect = elementBounds;

             s();

             page.reload();
            }, v);
          });
        }, 10000);
   },5000);
Beispiel #21
0
 function read_line() {
     system.stdout.writeLine('JS: ');
     var line = system.stdin.readLine();
     return line;
 }
  var msgStack = [msg]
  if (trace && trace.length) {
    msgStack.push('Stack:')
    trace.forEach(function (t) {
      msgStack.push('  at ' + t.file || t.sourceURL + ': ' + t.line + ' (in function ' + t.function + ')')
    })
  }
  return msgStack.join('\n')
}

phantom.onError = function (msg, trace) {
  exit(buildStack('Script - ' + msg, trace))
}

// Load configurations from stdin
var json = JSON.parse(system.stdin.readLine())
if (!json.html || !json.html.trim()) exit('Did not receive any html')

var options = json.options
var page = webpage.create()

// Completely load page & end process
// ----------------------------------
var rendered = false
var renderTimeout

// If renderDelay is manual, then listen for an event and don't automatically render
if (options.renderDelay === 'manual') {
  page.onCallback = function (message) {
    setTimeout(renderNow, 0)
    return message
Beispiel #23
0
	if ( err !== null ) {
		error("readAsync "+err);
		phantom.exit(0);
		return;
	}
	data=data.replace(/[\n\r]+/,'');
	var cmd = data.substr(0,4);
	data = data.substr(5);
    processCmd(cmd,data,function(){system.stdin.readLineAsync(onInput);},true);

};
/*
var server = webserver.create();

var wsStdin = server.listen(CONFIG.wsPort,{'keepAlive': true}, function(request, response) {
    console.log("EBAT'");
    var cmd = request.url.substr(1,5);
    console.log("CMD=",cmd);
    console.log("post=",request.postRaw);

    //response.statusCode = 200;
    //response.write('STARTED');
    //response.close();
    processCmd(cmd,request.postRaw,function(){},false);
    //phantom.exit();
});
*/

info("STARTED");
system.stdin.readLineAsync(onInput);
Beispiel #24
0
exports.stdin = function (cb) {
    cb(system.stdin.read());
};
Beispiel #25
0
 function read() {
     var data = stdin.readLine();
     try { data.split("\v").forEach(_read); }
     catch (e) { throw new Error(data); }
 }
Beispiel #26
0
var system = require('system');
var webpage = require('webpage');
var fs = require('fs');

var src = system.stdin.read();
var css = fs.read(phantom.libraryPath + '/../dist/forceLayout.css');

var page = webpage.create();

page.onConsoleMessage = function(msg) {
  console.log('CONSOLE:', msg);
};

page.onError = function(err) {
  console.log('ERROR:', JSON.stringify(err));
};

page.onCallback = function(type, data) {
  if(type == 'exit') {
    phantom.exit();
  }

  if(type == 'result') {
    svgToPng(data);
  }
};

page.open('file://' + phantom.libraryPath + '/render.html', function(status) {
  page.evaluate(function(src, css) {
    renderToSvg(src, css);
  }, src, css);
var loop = function() {
	var line = system.stdin.readLine();
	if (!line.trim()) {
		fs.remove(fifoFile);
		return phantom.exit(0);
	}

	try {
		line = JSON.parse(line);
	} catch (err) {
		fs.remove(fifoFile);
		return process.exit(0);
	}

	if (!page) page = webpage.create();

	page.viewportSize = {
		width: line.width || 1280,
		height: line.height || 960
	};

	page.paperSize = {
		format: line.paperFormat || 'A4',
		orientation: line.orientation || 'portrait',
		margin: line.margin || '0cm'
	};

	if (line.userAgent) page.settings.userAgent = line.userAgent;
	if (line.crop) {
		page.clipRect = {
			width: line.width || 1280,
			height: line.height || 960,
			top: line.cropMarginTop || 0,
			left: line.cropMarginLeft || 0
		}
	}

	page.open(line.url, function(requestStatus) {
		var file = platform === 'win32' ? fifoFile+'-'+(inc++) : fifoFile;

    // If there's a failure, communicate that through the FIFO by writing just the "!" character.
		if (requestStatus !== 'success') {
			fs.write(file, '!', 'w');
			page = null;
			loop();
			return;
		}

		var render = function() {
			setTimeout(function() {
				if (line.printMedia) forcePrintMedia();
				page.render(file, {format:line.format || 'png'});
				page = null;
				loop();
			}, 0);
		};

		var waitAndRender = function() {
			var timeout = setTimeout(function() {
				page.onAlert('webpage-renderable');
			}, 10000);

			var rendered = false;
			page.onAlert = function(msg) {
				if (rendered || msg !== 'webpage-renderable') return;
				rendered = true;
				clearTimeout(timeout);
				render();
			};

			page.evaluate(function() {
				if (window.renderable) return alert('webpage-renderable');
				var renderable = false;
				Object.defineProperty(window, 'renderable', {
					get: function() {
						return renderable;
					},
					set: function(val) {
						renderable = val;
						alert('webpage-renderable');
					}
				});
			});
		};

		var renderable = page.evaluate(function() {
			return window.renderable;
		});
		if (renderable === false) return waitAndRender();
		render();

	});
};
Beispiel #28
0
#!/usr/bin/env phantom

var system = require( 'system' ),
    config = JSON.parse(system.stdin.read()),
    page = require( 'webpage' ).create();

if ( config.width )
    page.viewportSize = {
        'width': config.width,
        'height': 1000
    };

if ( config.agent )
    page.settings.userAgent = config.agent;

page.open( config.target, function() {
    window.setTimeout( function () {
        system.stdout.write(page.renderBase64(config.format));
        phantom.exit();
    }, config.delay );
});
Beispiel #29
0
assert.throws(function() {sys.stdin.write('aaa');});
 function readInputLine() {
    return stdin.readLine()
                .trim()
                .split(".");
 };