From 509cf528d7c34883956a979f270df145393b8bb3 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sun, 12 Nov 2017 16:35:28 +0100 Subject: [PATCH] Started parser class. --- index.php | 23 ++++++++++++++--------- lib/TclUpdates/XmlParser.php | 31 +++++++++++++++++++++++++++++++ lib/autoloader.php | 6 ++++++ 3 files changed, 51 insertions(+), 9 deletions(-) create mode 100755 lib/TclUpdates/XmlParser.php create mode 100755 lib/autoloader.php diff --git a/index.php b/index.php index 25e6a3e..260fb61 100644 --- a/index.php +++ b/index.php @@ -1,28 +1,33 @@ = 8192) { - // Max length, probably even longer, definitely no XML + // Max length, probably even longer, definitely no data we want http_response_code(413); // "Payload too large" exit; } - $dom = new DOMDocument(); - $load_ok = $dom->loadXML($input_xml, LIBXML_NOENT); - if (!$load_ok || $dom->childNodes->length < 1) { + $xp = new XmlParser(); + $load_ok = $xp->loadXmlFromString($input_xml); + if (!$load_ok) { // XML could not be parsed - invalid or no XML http_response_code(406); // "Not acceptable" exit; } - $root_node = $dom->childNodes->item(0); - if ($root_node->nodeName != 'GOTU') { - // Root node isn't , so no update XML + if (!$xp->validateGOTU()) { + // No root node or root node isn't , so no update XML http_response_code(412); // "Precondition failed" exit; } // ### At this point we can be relatively sure to have the XML we want echo "Input length is " . strlen($input_xml) . " Bytes." . PHP_EOL; - echo $input_xml . PHP_EOL; + #echo $input_xml . PHP_EOL; + + // TODO: Check if it's XML // If so: Store a copy for re-parsing (or to print out and hang up on a wall) // Then parse XML into database diff --git a/lib/TclUpdates/XmlParser.php b/lib/TclUpdates/XmlParser.php new file mode 100755 index 0000000..f4f4625 --- /dev/null +++ b/lib/TclUpdates/XmlParser.php @@ -0,0 +1,31 @@ +dom = new \DOMDocument(); + } + + public function loadXMLFromString($xml) + { + $xml_ok = $this->dom->loadXML($xml, LIBXML_NOENT); + return $xml_ok; + } + + public function validateGOTU() + { + if ($this->dom->childNodes->length < 1) { + return false; + } + $root_node = $this->dom->childNodes->item(0); + if ($root_node->nodeName != 'GOTU') { + return false; + } + return true; + } +} diff --git a/lib/autoloader.php b/lib/autoloader.php new file mode 100755 index 0000000..1cc2a51 --- /dev/null +++ b/lib/autoloader.php @@ -0,0 +1,6 @@ +