Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
34 / 34 |
| HEXONET\ResponseParser | |
100.00% |
1 / 1 |
|
100.00% |
2 / 2 |
15 | |
100.00% |
34 / 34 |
| parse | |
100.00% |
1 / 1 |
7 | |
100.00% |
19 / 19 |
|||
| serialize | |
100.00% |
1 / 1 |
8 | |
100.00% |
15 / 15 |
|||
| <?php | |
| declare(strict_types=1); | |
| /** | |
| * HEXONET | |
| * Copyright © HEXONET | |
| */ | |
| namespace HEXONET; | |
| /** | |
| * HEXONET ResponseParser | |
| * | |
| * @package HEXONET | |
| */ | |
| class ResponseParser | |
| { | |
| /** | |
| * Method to parse plain API response into js object | |
| * @param string $raw API plain response | |
| * @return array[string]string API response as hash | |
| */ | |
| public static function parse($raw) | |
| { | |
| $hash = array(); | |
| $rlist = explode("\n", preg_replace("/\r\n/", "\n", $raw)); | |
| foreach ($rlist as $item) { | |
| if (preg_match("/^([^\=]*[^\t\= ])[\t ]*=[\t ]*(.*)$/", $item, $m)) { | |
| $attr = $m[1]; | |
| $value = $m[2]; | |
| $value = preg_replace("/[\t ]*$/", "", $value); | |
| if (preg_match("/^property\[([^\]]*)\]/i", $attr, $m)) { | |
| if (!array_key_exists("PROPERTY", $hash)) { | |
| $hash["PROPERTY"] = array(); | |
| } | |
| $prop = strtoupper($m[1]); | |
| $prop = preg_replace("/\s/", "", $prop); | |
| if (array_key_exists($prop, $hash["PROPERTY"])) { | |
| array_push($hash["PROPERTY"][$prop], $value); | |
| } else { | |
| $hash["PROPERTY"][$prop] = array($value); | |
| } | |
| } else { | |
| $hash[strtoupper($attr)] = $value; | |
| } | |
| } | |
| } | |
| if (!array_key_exists("DESCRIPTION", $hash)) { | |
| $hash["DESCRIPTION"] = ""; | |
| } | |
| return $hash; | |
| } | |
| /** | |
| * Serialize given parsed response hash back to plain text | |
| * @param array[string]string $r API response as hash | |
| * @return string plain API response | |
| */ | |
| public static function serialize($r) | |
| { | |
| $plain = "[RESPONSE]"; | |
| if (array_key_exists("PROPERTY", $r)) { | |
| foreach ($r["PROPERTY"] as $key => $vals) { | |
| foreach ($vals as $idx => $val) { | |
| $plain .= "\r\nPROPERTY[" . $key . "][" . $idx . "]=" . $val; | |
| } | |
| } | |
| } | |
| if (array_key_exists("CODE", $r)) { | |
| $plain .= "\r\nCODE=" . $r["CODE"]; | |
| } | |
| if (array_key_exists("DESCRIPTION", $r)) { | |
| $plain .= "\r\nDESCRIPTION=" . $r["DESCRIPTION"]; | |
| } | |
| if (array_key_exists("QUEUETIME", $r)) { | |
| $plain .= "\r\nQUEUETIME=" . $r["QUEUETIME"]; | |
| } | |
| if (array_key_exists("RUNTIME", $r)) { | |
| $plain .= "\r\nRUNTIME=" . $r["RUNTIME"]; | |
| } | |
| $plain .= "\r\nEOF\r\n"; | |
| return $plain; | |
| } | |
| } |