xref: /plugin/combo/vendor/php-webdriver/webdriver/lib/Remote/RemoteStatus.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
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