mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 22:47:32 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
/**  * Set up page and script parameters  */ var page = require('webpage').create(), system = require('system'), response = {}, debug = [], logs = [], procedure = {};
 | 
						|
/**  * Global variables  */   /**  * Define width & height of capture  */   /**  * Define paper size.  */
 | 
						|
/**  * Define viewport size.  */  var viewportWidth = 0, viewportHeight = 0;
 | 
						|
if (viewportWidth && viewportHeight) {
 | 
						|
    debug.push(new Date().toISOString().slice(0, -5) + ' [INFO] PhantomJS - Set viewport size ~ width: ' + viewportWidth + ' height: ' + viewportHeight);
 | 
						|
    page.viewportSize = {width: viewportWidth, height: viewportHeight};
 | 
						|
}
 | 
						|
/**  * Define custom headers.  */  page.customHeaders = {};
 | 
						|
/**  * Page settings  */  page.settings.resourceTimeout = 5000;
 | 
						|
/**  * On resource timeout  */ page.onResourceTimeout = function (error) {
 | 
						|
    response = error;
 | 
						|
    response.status = error.errorCode;
 | 
						|
};
 | 
						|
/**  * On resource requested  */ page.onResourceRequested = function (resource) {
 | 
						|
};
 | 
						|
/**  * On resource received  */ page.onResourceReceived = function (resource) {
 | 
						|
    if (!response.status) {
 | 
						|
        response = resource;
 | 
						|
    }
 | 
						|
};
 | 
						|
/**  * Handle page errors  */ page.onError = function (msg, trace) {
 | 
						|
    var error = {message: msg, trace: []};
 | 
						|
    trace.forEach(function (t) {
 | 
						|
        error.trace.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function + ')' : ''));
 | 
						|
    });
 | 
						|
    logs.push(error);
 | 
						|
};
 | 
						|
/**  * Handle global errors  */ phantom.onError = function (msg, trace) {
 | 
						|
    var stack = [];
 | 
						|
    trace.forEach(function (t) {
 | 
						|
        stack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function + ')' : ''));
 | 
						|
    });
 | 
						|
    response.status = 500;
 | 
						|
    response.content = msg;
 | 
						|
    response.console = stack;
 | 
						|
    system.stdout.write(JSON.stringify(response, undefined, 4));
 | 
						|
    phantom.exit(1);
 | 
						|
};
 | 
						|
/**  * Open page  */ page.open('__YOUR_LINK_HERE__', 'GET', '', function (status) {
 | 
						|
    page.evaluate(function () {
 | 
						|
        debugger;
 | 
						|
        var styles = {};
 | 
						|
        for (var property in styles) {
 | 
						|
            document.body.style[property] = styles[property];
 | 
						|
        }
 | 
						|
    });
 | 
						|
    var delay = 0;
 | 
						|
    if (!delay) {
 | 
						|
        return procedure.execute(status);
 | 
						|
    }
 | 
						|
    debug.push(new Date().toISOString().slice(0, -5) + ' [INFO] PhantomJS - Delaying page render for ' + delay + ' second(s)');
 | 
						|
    window.setTimeout(function () {
 | 
						|
        debug.push(new Date().toISOString().slice(0, -5) + ' [INFO] PhantomJS - Rendering page after delaying for ' + delay + ' second(s)');
 | 
						|
        procedure.execute(status);
 | 
						|
    }, (delay * 1000));
 | 
						|
});
 | 
						|
/**  * Execute procedure  */ procedure.execute = function (status) {
 | 
						|
    if (status === 'success') {
 | 
						|
        try {
 | 
						|
            response.content = page.evaluate(function () {
 | 
						|
                return document.getElementsByTagName('html')[0].innerHTML
 | 
						|
            });
 | 
						|
        } catch (e) {
 | 
						|
            response.status = 500;
 | 
						|
            response.content = e.message;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    response.console = logs;
 | 
						|
    system.stderr.write(debug.join('\\n') + '\\n');
 | 
						|
    system.stdout.write(JSON.stringify(response, undefined, 4));
 | 
						|
    phantom.exit();
 | 
						|
};
 |