3v4l.org

run code in 300+ PHP versions simultaneously
<?php namespace J7mbo\SeleniumGrid2Api; use J7mbo\SeleniumGrid2Api\Entity\CapabilityFactory, J7mbo\SeleniumGrid2Api\Entity\NodeFactory, GuzzleHttp\Client as HttpClient, GuzzleHttp\Message\Response; /** * Class SeleniumGrid2Api * * @package J7mbo\SeleniumGrid2Api */ class SeleniumGrid2Api { /** * @var int The timeout for the request */ const REQUEST_TIMEOUT = 5; /** * @var HttpClient */ protected $httpClient; /** * @var JsonValidator */ protected $jsonValidator; /** * @var CapabilityFactory */ protected $capabilityFactory; /** * @var NodeFactory */ protected $nodeFactory; /** * @constructor * * @param HttpClient $httpClient * @param JsonValidator $jsonValidator * @param CapabilityFactory $capabilityFactory * @param NodeFactory $nodeFactory */ public function __construct( HttpClient $httpClient, JsonValidator $jsonValidator, CapabilityFactory $capabilityFactory, NodeFactory $nodeFactory ) { $this->httpClient = $httpClient; $this->jsonValidator = $jsonValidator; $this->capabilityFactory = $capabilityFactory; $this->nodeFactory = $nodeFactory; } /** * Get a Node entity representing the running node * * @param string $host * @param int $port * * @throws NotFoundException * * @return Entity\Node */ public function getNode($host = 'localhost', $port = 5555) { $uri = sprintf('http://%s:%d', $host, $port); $request = $this->httpClient->createRequest('GET', sprintf(Endpoints::NODE_STATUS), $uri, [ 'timeout' => self::REQUEST_TIMEOUT ]); try { /** @var Response $response */ /** @noinspection PhpVoidFunctionResultUsedInspection */ $response = $this->httpClient->send($request); if (($status = $response->getStatusCode()) !== 200) { throw new NotFoundException(sprintf('Status code for: %s returned %d', $uri, $status)); } if ($this->jsonValidator->isJson($response->getBody())) { throw new NotFoundException(sprintf('Invalid json returned from: %s', $uri)); } $data = json_decode($response->getBody(), true); $capabilities = []; foreach($data['request']['capabilities'] as $capability) { if ($capability['seleniumProtocol'] === 'WebDriver') { $capabilities[] = $this->capabilityFactory->build( $capability['browsername'], $capability['maxInstances'], $capability['platform'] ); } } return $this->nodeFactory->build($capabilities, $host, $port); } catch (\Exception $e) { throw new NotFoundException($e->getMessage()); } } }
Output for git.master, git.master_jit, rfc.property-hooks

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
132.76 ms | 405 KiB | 5 Q