move html parsing into own class
authorChristian Weiske <cweiske@cweiske.de>
Mon, 13 Dec 2010 07:08:38 +0000 (08:08 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Mon, 13 Dec 2010 07:08:38 +0000 (08:08 +0100)
Wrt3g.php
Wrt3g/HtmlParser.php [new file with mode: 0644]

index 78cb10d..0cd9de0 100644 (file)
--- a/Wrt3g.php
+++ b/Wrt3g.php
@@ -36,15 +36,6 @@ class Wrt3g
      */
     public $password;
 
-    protected static $arTranslations = array(
-        'GPRS_MSG.WWBEAR'      => 'type',
-        'GPRS_MSG.NNAME'       => 'network',
-        'GPRS_MSG.STRENGTH'    => 'signal strength',
-        'GPRS_MSG.ACQUIRING'   => 'aquiring',
-        'GPRS_MSG.WWBEAR_GPRS' => 'GPRS',
-        'GPRS_MSG.WWBEAR_UMTS' => 'UMTS',
-    );
-
 
 
     /**
@@ -108,14 +99,7 @@ class Wrt3g
         $r->setUrl($strUrlBase . '/index_wstatus2.asp');
         $resp = $r->send();
         echo $resp->getStatus() . ' ' . $resp->getReasonPhrase() . "\n";
-        $body = $resp->getBody();
-        preg_match('/var status2 = "(.+)"/', $body, $arMatches);
-
-        $strStatus = $arMatches[1];
-        //Connecting
-        //Disconnected
-        //Connected
-        $arRetval['connection'] = strtolower($strStatus);
+        $arRetval = $parser->index_wstatus2($resp->getBody());
 
         /**
         * GPRS/UMTS Status
@@ -123,41 +107,9 @@ class Wrt3g
         $r->setUrl($strUrlBase . '/index_wstatus1.asp');
         $resp = $r->send();
         $body = $resp->getBody();
-        $arRetval = array_merge($arRetval, $this->parseStatus($body));
+        $arRetval = array_merge($arRetval, $parser->index_wstatus1($body));
 
         return $arRetval;
     }//public function getStatus()
-
-
-
-    /**
-    * Parses the body and returns extracted values
-    *
-    * @param string $body HTML document to parse
-    *
-    * @return array Array of key-value pairs
-    */
-    protected function parseStatus($body)
-    {
-        $arRetval = array();
-        $arMatches = array();
-        preg_match_all('#>Capture\(([^)]+)\)</#', $body, $arMatches);
-        $arData = array();
-        reset($arMatches[1]);
-        while (current($arMatches[1])) {
-            $key   = current($arMatches[1]);
-            $value = next($arMatches[1]);
-            if (isset(self::$arTranslations[$key])) {
-                $key = self::$arTranslations[$key];
-            }
-            if (isset(self::$arTranslations[$value])) {
-                $value = self::$arTranslations[$value];
-            }
-            $arRetval[$key] = $value;
-            next($arMatches[1]);
-        }
-
-        return $arRetval;
-    }
 }
 ?>
\ No newline at end of file
diff --git a/Wrt3g/HtmlParser.php b/Wrt3g/HtmlParser.php
new file mode 100644 (file)
index 0000000..03ac574
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+/**
+* HTML parsing for the linksys router HTML pages
+*
+* PHP version 5
+*
+* @category Tools
+* @package  linksys-wrt3g-tools
+* @author   Christian Weiske <cweiske@cweiske.de>
+* @license  AGPL v3
+* @link     http://cweiske.de/linksys-wrt3g-tools.htm
+*/
+class Wrt3g_HtmlParser
+{
+    protected static $arTranslations = array(
+        'GPRS_MSG.WWBEAR'      => 'type',
+        'GPRS_MSG.NNAME'       => 'network',
+        'GPRS_MSG.STRENGTH'    => 'signal strength',
+        'GPRS_MSG.ACQUIRING'   => 'aquiring',
+        'GPRS_MSG.WWBEAR_GPRS' => 'GPRS',
+        'GPRS_MSG.WWBEAR_UMTS' => 'UMTS',
+    );
+
+
+
+    /**
+    * Parses the body of /index_wstatus1.asp and returns extracted values.
+    *
+    * @param string $body HTML document to parse
+    *
+    * @return array Array of key-value pairs
+    */
+    public function index_wstatus1($body)
+    {
+        $arRetval = array();
+        $arMatches = array();
+        preg_match_all('#>Capture\(([^)]+)\)</#', $body, $arMatches);
+        $arData = array();
+        reset($arMatches[1]);
+        while (current($arMatches[1])) {
+            $key   = current($arMatches[1]);
+            $value = next($arMatches[1]);
+            if (isset(self::$arTranslations[$key])) {
+                $key = self::$arTranslations[$key];
+            }
+            if (isset(self::$arTranslations[$value])) {
+                $value = self::$arTranslations[$value];
+            }
+            $arRetval[$key] = $value;
+            next($arMatches[1]);
+        }
+
+        return $arRetval;
+    }
+
+
+
+    /**
+    * Parses the body of /index_wstatus2.asp and returns extracted values.
+    *
+    * @param string $body HTML document to parse
+    *
+    * @return array Array with "connection" as key and one of "connecting",
+    *               "connected" or "disconnected" as value.
+    */
+    public function index_wstatus2($body)
+    {
+        preg_match('/var status2 = "(.+)"/', $body, $arMatches);
+
+        $strStatus = $arMatches[1];
+        //Connecting
+        //Disconnected
+        //Connected
+        return array('connection' => strtolower($strStatus));
+    }
+}
\ No newline at end of file