| 1 | <?php | ||
| 30 | class BrowserMob extends Module | ||
| 31 | { | ||
| 32 | |||
| 33 | protected $config = ['host', 'port', 'autostart', 'blacklist', 'whitelist', 'limits', 'timeouts', 'dns', 'retry', 'basicAuth', 'littleproxy']; | ||
| 34 | |||
| 35 | protected $requiredFields = ['host']; | ||
| 36 | |||
| 37 | protected $response; | ||
| 38 | |||
| 39 | private $bmp; | ||
| 40 | |||
| 41 | /** | ||
| 42 | * @codeCoverageIgnore | ||
| 43 | * @ignore Codeception specific | ||
| 44 | */ | ||
| 45 | public function _initialize() | ||
| 66 | |||
| 67 | protected static function __pingProxy($url) | ||
| 77 | |||
| 78 | protected function __setProxyCapabilities($options) | ||
| 79 |     { | ||
| 80 |         foreach ($options as $config => $data) { | ||
| 81 |             if (false === empty($data)) { | ||
| 82 |                 switch ((string) $config) { | ||
| 83 | case 'blacklist': | ||
| 84 |                         foreach ($data['patterns'] as $pattern) { | ||
| 85 | $this->_blacklist($pattern, $data['code']); | ||
| 86 |                             if (false === $this->response->success) { | ||
| 87 | break; | ||
| 88 | } | ||
| 89 | } | ||
| 90 | break; | ||
| 91 | case 'whitelist': | ||
| 92 |                         $patterns = implode(',', $data['patterns']); | ||
| 93 | $this->_whitelist($patterns, $data['code']); | ||
| 94 | break; | ||
| 95 | case 'limits': | ||
| 96 | $this->_limits($data); | ||
| 97 | break; | ||
| 98 | case 'timeouts': | ||
| 99 | $this->_timeouts($data); | ||
| 100 | break; | ||
| 101 | case 'redirect': | ||
| 102 |                         foreach ($data as $entry) { | ||
| 103 | $this->_remapHosts($entry['domain'], $entry['ip']); | ||
| 104 |                             if (false === $this->response->success) { | ||
| 105 | break; | ||
| 106 | } | ||
| 107 | } | ||
| 108 | break; | ||
| 109 | case 'retry': | ||
| 110 | $this->_retry($data); | ||
| 111 | break; | ||
| 112 | case 'basicAuth': | ||
| 113 |                         foreach ($data as $entry) { | ||
| 114 | $this->_basicAuth($entry['domain'], $entry['options']); | ||
| 115 |                             if (false === $this->response->success) { | ||
| 116 | break; | ||
| 117 | } | ||
| 118 | } | ||
| 119 | break; | ||
| 120 | default: | ||
| 121 | // do nothing | ||
| 122 | } | ||
| 123 | } | ||
| 124 | } | ||
| 125 | } | ||
| 126 | |||
| 127 | public function getProxyPort() | ||
| 131 | |||
| 132 | public function openProxy($capabilities = null) | ||
| 133 |     { | ||
| 134 | $this->_open(); | ||
| 135 |         if (empty($capabilities)) { | ||
| 136 | $capabilities = $this->config; | ||
| 1 ignored issue–
                            show | |||
| 137 | } | ||
| 138 | $this->__setProxyCapabilities($capabilities); | ||
| 139 | return $this->getProxyPort(); | ||
| 140 | } | ||
| 141 | |||
| 142 | public function closeProxy() | ||
| 143 |     { | ||
| 144 | $this->_close(); | ||
| 145 | } | ||
| 146 | |||
| 147 | public function startHar() | ||
| 148 |     { | ||
| 149 | $this->_newHar(); | ||
| 150 | return $this->response->success; | ||
| 151 | } | ||
| 152 | |||
| 153 | public function startPage() | ||
| 158 | |||
| 159 | public function getHar() | ||
| 160 |     { | ||
| 161 | return $this->bmp->har; | ||
| 162 | } | ||
| 163 | |||
| 164 | public function setHeaders($headers) | ||
| 169 | |||
| 170 | public function redirectUrl($match, $replace) | ||
| 175 | |||
| 176 | // magic function that exposes BrowserMobProxy API pulic methods | ||
| 177 | public function __call($name, $args) | ||
| 203 | |||
| 204 | } | ||
| 205 |