| @@ 239-274 (lines=36) @@ | ||
| 236 | * @param array $response Response data |
|
| 237 | * @return array Array with parsed data |
|
| 238 | */ |
|
| 239 | protected function parseResponse(array $response): array |
|
| 240 | { |
|
| 241 | $result = []; |
|
| 242 | $i = -1; |
|
| 243 | $lines = \count($response); |
|
| 244 | foreach ($response as $key => $value) { |
|
| 245 | switch ($value) { |
|
| 246 | case '!re': |
|
| 247 | $i++; |
|
| 248 | break; |
|
| 249 | case '!fatal': |
|
| 250 | $result = $response; |
|
| 251 | break 2; |
|
| 252 | case '!trap': |
|
| 253 | case '!done': |
|
| 254 | // Check for =ret=, .tag and any other following messages |
|
| 255 | for ($j = $key + 1; $j <= $lines; $j++) { |
|
| 256 | // If we have lines after current one |
|
| 257 | if (isset($response[$j])) { |
|
| 258 | $this->pregResponse($response[$j], $matches); |
|
| 259 | if (isset($matches[1][0], $matches[2][0])) { |
|
| 260 | $result['after'][$matches[1][0]] = $matches[2][0]; |
|
| 261 | } |
|
| 262 | } |
|
| 263 | } |
|
| 264 | break 2; |
|
| 265 | default: |
|
| 266 | $this->pregResponse($value, $matches); |
|
| 267 | if (isset($matches[1][0], $matches[2][0])) { |
|
| 268 | $result[$i][$matches[1][0]] = $matches[2][0]; |
|
| 269 | } |
|
| 270 | break; |
|
| 271 | } |
|
| 272 | } |
|
| 273 | return $result; |
|
| 274 | } |
|
| 275 | ||
| 276 | /** |
|
| 277 | * Parse result from RouterOS by regular expression |
|
| @@ 106-141 (lines=36) @@ | ||
| 103 | $this->raw = []; |
|
| 104 | $this->parsed = []; |
|
| 105 | } |
|
| 106 | private function parseResponse(array $response): array |
|
| 107 | { |
|
| 108 | $result = []; |
|
| 109 | $i = -1; |
|
| 110 | $lines = \count($response); |
|
| 111 | foreach ($response as $key => $value) { |
|
| 112 | switch ($value) { |
|
| 113 | case '!re': |
|
| 114 | $i++; |
|
| 115 | break; |
|
| 116 | case '!fatal': |
|
| 117 | $result = $response; |
|
| 118 | break 2; |
|
| 119 | case '!trap': |
|
| 120 | case '!done': |
|
| 121 | // Check for =ret=, .tag and any other following messages |
|
| 122 | for ($j = $key + 1; $j <= $lines; $j++) { |
|
| 123 | // If we have lines after current one |
|
| 124 | if (isset($response[$j])) { |
|
| 125 | $this->pregResponse($response[$j], $matches); |
|
| 126 | if (isset($matches[1][0], $matches[2][0])) { |
|
| 127 | $result['after'][$matches[1][0]] = $matches[2][0]; |
|
| 128 | } |
|
| 129 | } |
|
| 130 | } |
|
| 131 | break 2; |
|
| 132 | default: |
|
| 133 | $this->pregResponse($value, $matches); |
|
| 134 | if (isset($matches[1][0], $matches[2][0])) { |
|
| 135 | $result[$i][$matches[1][0]] = $matches[2][0]; |
|
| 136 | } |
|
| 137 | break; |
|
| 138 | } |
|
| 139 | } |
|
| 140 | return $result; |
|
| 141 | } |
|
| 142 | private function pregResponse(string $value, &$matches) { |
|
| 143 | preg_match_all('/^[=|\.](.*)=(.*)/', $value, $matches); |
|
| 144 | } |
|