1*04fd306cSNickeau<?php 2*04fd306cSNickeau 3*04fd306cSNickeaunamespace Facebook\WebDriver\Remote; 4*04fd306cSNickeau 5*04fd306cSNickeau/** 6*04fd306cSNickeau * Represents status of remote end 7*04fd306cSNickeau * 8*04fd306cSNickeau * @see https://www.w3.org/TR/webdriver/#status 9*04fd306cSNickeau */ 10*04fd306cSNickeauclass RemoteStatus 11*04fd306cSNickeau{ 12*04fd306cSNickeau /** @var bool */ 13*04fd306cSNickeau protected $isReady; 14*04fd306cSNickeau /** @var string */ 15*04fd306cSNickeau protected $message; 16*04fd306cSNickeau /** @var array */ 17*04fd306cSNickeau protected $meta = []; 18*04fd306cSNickeau 19*04fd306cSNickeau /** 20*04fd306cSNickeau * @param bool $isReady 21*04fd306cSNickeau * @param string $message 22*04fd306cSNickeau */ 23*04fd306cSNickeau protected function __construct($isReady, $message, array $meta = []) 24*04fd306cSNickeau { 25*04fd306cSNickeau $this->isReady = (bool) $isReady; 26*04fd306cSNickeau $this->message = (string) $message; 27*04fd306cSNickeau 28*04fd306cSNickeau $this->setMeta($meta); 29*04fd306cSNickeau } 30*04fd306cSNickeau 31*04fd306cSNickeau /** 32*04fd306cSNickeau * @param array $responseBody 33*04fd306cSNickeau * @return RemoteStatus 34*04fd306cSNickeau */ 35*04fd306cSNickeau public static function createFromResponse(array $responseBody) 36*04fd306cSNickeau { 37*04fd306cSNickeau $object = new static($responseBody['ready'], $responseBody['message'], $responseBody); 38*04fd306cSNickeau 39*04fd306cSNickeau return $object; 40*04fd306cSNickeau } 41*04fd306cSNickeau 42*04fd306cSNickeau /** 43*04fd306cSNickeau * The remote end's readiness state. 44*04fd306cSNickeau * False if an attempt to create a session at the current time would fail. 45*04fd306cSNickeau * However, the value true does not guarantee that a New Session command will succeed. 46*04fd306cSNickeau * 47*04fd306cSNickeau * @return bool 48*04fd306cSNickeau */ 49*04fd306cSNickeau public function isReady() 50*04fd306cSNickeau { 51*04fd306cSNickeau return $this->isReady; 52*04fd306cSNickeau } 53*04fd306cSNickeau 54*04fd306cSNickeau /** 55*04fd306cSNickeau * An implementation-defined string explaining the remote end's readiness state. 56*04fd306cSNickeau * 57*04fd306cSNickeau * @return string 58*04fd306cSNickeau */ 59*04fd306cSNickeau public function getMessage() 60*04fd306cSNickeau { 61*04fd306cSNickeau return $this->message; 62*04fd306cSNickeau } 63*04fd306cSNickeau 64*04fd306cSNickeau /** 65*04fd306cSNickeau * Arbitrary meta information specific to remote-end implementation. 66*04fd306cSNickeau * 67*04fd306cSNickeau * @return array 68*04fd306cSNickeau */ 69*04fd306cSNickeau public function getMeta() 70*04fd306cSNickeau { 71*04fd306cSNickeau return $this->meta; 72*04fd306cSNickeau } 73*04fd306cSNickeau 74*04fd306cSNickeau protected function setMeta(array $meta) 75*04fd306cSNickeau { 76*04fd306cSNickeau unset($meta['ready'], $meta['message']); 77*04fd306cSNickeau 78*04fd306cSNickeau $this->meta = $meta; 79*04fd306cSNickeau } 80*04fd306cSNickeau} 81