Update to Drupal 8.0.0-rc3. For more information, see https://www.drupal.org/node/2608078
This commit is contained in:
parent
6419a031d7
commit
4afb23bbd3
762 changed files with 20080 additions and 6368 deletions
124
vendor/jcalderonzumba/gastonjs/src/Browser/BrowserBase.php
vendored
Normal file
124
vendor/jcalderonzumba/gastonjs/src/Browser/BrowserBase.php
vendored
Normal file
|
@ -0,0 +1,124 @@
|
|||
<?php
|
||||
|
||||
namespace Zumba\GastonJS\Browser;
|
||||
|
||||
use Zumba\GastonJS\Exception\BrowserError;
|
||||
use Zumba\GastonJS\Exception\DeadClient;
|
||||
use GuzzleHttp\Client;
|
||||
use GuzzleHttp\Exception\ConnectException;
|
||||
use GuzzleHttp\Exception\ServerException;
|
||||
|
||||
/**
|
||||
* Class BrowserBase
|
||||
* @package Zumba\GastonJS\Browser
|
||||
*/
|
||||
class BrowserBase {
|
||||
/** @var mixed */
|
||||
protected $logger;
|
||||
/** @var bool */
|
||||
protected $debug;
|
||||
/** @var string */
|
||||
protected $phantomJSHost;
|
||||
/** @var Client */
|
||||
protected $apiClient;
|
||||
|
||||
/**
|
||||
* Creates an http client to consume the phantomjs API
|
||||
*/
|
||||
protected function createApiClient() {
|
||||
// Provide a BC switch between guzzle 5 and guzzle 6.
|
||||
if (class_exists('GuzzleHttp\Psr7\Response')) {
|
||||
$this->apiClient = new Client(array("base_uri" => $this->getPhantomJSHost()));
|
||||
}
|
||||
else {
|
||||
$this->apiClient = new Client(array("base_url" => $this->getPhantomJSHost()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: not sure how to do the normalizeKeys stuff fix when needed
|
||||
* @param $keys
|
||||
* @return mixed
|
||||
*/
|
||||
protected function normalizeKeys($keys) {
|
||||
return $keys;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Client
|
||||
*/
|
||||
public function getApiClient() {
|
||||
return $this->apiClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
*/
|
||||
public function getPhantomJSHost() {
|
||||
return $this->phantomJSHost;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return mixed
|
||||
*/
|
||||
public function getLogger() {
|
||||
return $this->logger;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restarts the browser
|
||||
*/
|
||||
public function restart() {
|
||||
//TODO: Do we really need to do this?, we are just a client
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a command to the browser
|
||||
* @throws BrowserError
|
||||
* @throws \Exception
|
||||
* @return mixed
|
||||
*/
|
||||
public function command() {
|
||||
try {
|
||||
$args = func_get_args();
|
||||
$commandName = $args[0];
|
||||
array_shift($args);
|
||||
$messageToSend = json_encode(array('name' => $commandName, 'args' => $args));
|
||||
/** @var $commandResponse \GuzzleHttp\Psr7\Response|\GuzzleHttp\Message\Response */
|
||||
$commandResponse = $this->getApiClient()->post("/api", array("body" => $messageToSend));
|
||||
$jsonResponse = json_decode($commandResponse->getBody(), TRUE);
|
||||
} catch (ServerException $e) {
|
||||
$jsonResponse = json_decode($e->getResponse()->getBody()->getContents(), true);
|
||||
} catch (ConnectException $e) {
|
||||
throw new DeadClient($e->getMessage(), $e->getCode(), $e);
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
|
||||
if (isset($jsonResponse['error'])) {
|
||||
throw $this->getErrorClass($jsonResponse);
|
||||
}
|
||||
|
||||
return $jsonResponse['response'];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $error
|
||||
* @return BrowserError
|
||||
*/
|
||||
protected function getErrorClass($error) {
|
||||
$errorClassMap = array(
|
||||
'Poltergeist.JavascriptError' => "Zumba\\GastonJS\\Exception\\JavascriptError",
|
||||
'Poltergeist.FrameNotFound' => "Zumba\\GastonJS\\Exception\\FrameNotFound",
|
||||
'Poltergeist.InvalidSelector' => "Zumba\\GastonJS\\Exception\\InvalidSelector",
|
||||
'Poltergeist.StatusFailError' => "Zumba\\GastonJS\\Exception\\StatusFailError",
|
||||
'Poltergeist.NoSuchWindowError' => "Zumba\\GastonJS\\Exception\\NoSuchWindowError",
|
||||
'Poltergeist.ObsoleteNode' => "Zumba\\GastonJS\\Exception\\ObsoleteNode"
|
||||
);
|
||||
if (isset($error['error']['name']) && isset($errorClassMap[$error["error"]["name"]])) {
|
||||
return new $errorClassMap[$error["error"]["name"]]($error);
|
||||
}
|
||||
|
||||
return new BrowserError($error);
|
||||
}
|
||||
}
|
Reference in a new issue