Version 1
[yaffs-website] / vendor / jcalderonzumba / gastonjs / src / Client / poltergeist.js
diff --git a/vendor/jcalderonzumba/gastonjs/src/Client/poltergeist.js b/vendor/jcalderonzumba/gastonjs/src/Client/poltergeist.js
new file mode 100644 (file)
index 0000000..4e86d08
--- /dev/null
@@ -0,0 +1,78 @@
+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;