This repository has been archived on 2025-01-19. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
drupalcampbristol/web/vendor/jcalderonzumba/gastonjs/src/Client/poltergeist.js
2017-02-13 15:31:17 +00:00

78 lines
2.1 KiB
JavaScript

Poltergeist = (function () {
/**
* The MAIN class of the project
* @param port
* @param width
* @param height
* @param jsErrors
* @constructor
*/
function Poltergeist(port, width, height, jsErrors) {
var self;
this.browser = new Poltergeist.Browser(this, width, height, jsErrors);
this.commandServer = new Poltergeist.Server(this, port);
this.commandServer.start();
self = this;
phantom.onError = function (message, stack) {
return self.onError(message, stack);
};
this.running = false;
}
/**
* Tries to execute a command send by a client and returns the command response
* or error if something happened
* @param command
* @param serverResponse
* @return {boolean}
*/
Poltergeist.prototype.serverRunCommand = function (command, serverResponse) {
var error;
this.running = true;
try {
return this.browser.serverRunCommand(command, serverResponse);
} catch (_error) {
error = _error;
if (error instanceof Poltergeist.Error) {
return this.serverSendError(error, serverResponse);
}
return this.serverSendError(new Poltergeist.BrowserError(error.toString(), error.stack), serverResponse);
}
};
/**
* Sends error back to the client
* @param error
* @param serverResponse
* @return {boolean}
*/
Poltergeist.prototype.serverSendError = function (error, serverResponse) {
var errorObject;
errorObject = {
error: {
name: error.name || 'Generic',
args: error.args && error.args() || [error.toString()]
}
};
return this.commandServer.sendError(serverResponse, 500, errorObject);
};
/**
* Send the response back to the client
* @param response Data to send to the client
* @param serverResponse Phantomjs response object associated to the client request
* @return {boolean}
*/
Poltergeist.prototype.serverSendResponse = function (response, serverResponse) {
return this.commandServer.send(serverResponse, {response: response});
};
return Poltergeist;
})();
window.Poltergeist = Poltergeist;