update docblock
[linksys-wrt3g-tools.git] / Wrt3g.php
index 18e8608ebd5205336459bf49af77ab8947495439..c71ae1904a5a7c258dc313669112bc7f07ada47e 100644 (file)
--- a/Wrt3g.php
+++ b/Wrt3g.php
@@ -56,6 +56,14 @@ class Wrt3g
      */
     public $verbosity = 0;
 
+    /**
+     * Class to send HTTP Requests with.
+     * Needs to be compatible with HTTP_Request2
+     *
+     * @var string
+     */
+    public $requestClass = 'HTTP_Request2';
+
 
 
     /**
@@ -99,7 +107,7 @@ class Wrt3g
         $url = $this->getAuthBaseUrl() . '/apply.cgi';
         $this->log('Connecting to ' . $url);
 
-        $r = new HTTP_Request2();
+        $r = new $this->requestClass();
         $r->setMethod(HTTP_Request2::METHOD_POST);
         $r->setUrl($url);
         $r->addPostParameter('action', 'Reboot');
@@ -130,7 +138,7 @@ class Wrt3g
         /**
          * Connection status
          */
-        $r = new HTTP_Request2();
+        $r = new $this->requestClass();
         $r->setMethod(HTTP_Request2::METHOD_GET);
         $r->setUrl($strUrlBase . '/index_wstatus2.asp');
         $this->log('Connecting to ' . $strUrlBase . '/index_wstatus2.asp', 1);
@@ -153,23 +161,21 @@ class Wrt3g
 
 
     /**
-     * Retrieves pc card/SIM status information
+     * Loads "Status_NoAuth.asp" page and parses the body.
      *
-     * @return array Array with several key-value pairs
-     *               connection => connecting, disconnected, connected
+     * @return array Associative array with connection status.
      *
-     * @throws Exception When the router can't be reached
+     * @throws Exception When something goes wrong, i.e. router not
+     *                   reachable
      */
-    public function getCardStatus()
+    protected function loadStatus_NoAuth()
     {
-        $arRetval = array();
-
         $strUrlBase = $this->getAnonBaseUrl();
 
         $url = $strUrlBase . '/Status_NoAuth.asp';
         $this->log('Connecting to ' . $url, 1);
 
-        $r = new HTTP_Request2();
+        $r = new $this->requestClass();
         $r->setMethod(HTTP_Request2::METHOD_GET);
         $r->setUrl($url);
         $resp = $r->send();
@@ -177,7 +183,25 @@ class Wrt3g
         //FIXME: check status
 
         $parser = new Wrt3g_HtmlParser();
-        $arRetval = $parser->status_noauth($resp->getBody());
+
+        return $parser->status_noauth(
+            $resp->getBody()
+        );
+    }
+
+
+
+    /**
+     * Retrieves pc card/SIM status information
+     *
+     * @return array Array with several key-value pairs
+     *               connection => connecting, disconnected, connected
+     *
+     * @throws Exception When the router can't be reached
+     */
+    public function getCardStatus()
+    {
+        $arRetval = $this->loadStatus_NoAuth();
 
         return array_intersect_key(
             $arRetval,
@@ -202,22 +226,7 @@ class Wrt3g
      */
     public function getFullStatus()
     {
-        $arRetval = array();
-
-        $strUrlBase = $this->getAnonBaseUrl();
-
-        $url = $strUrlBase . '/Status_NoAuth.asp';
-        $this->log('Connecting to ' . $url, 1);
-
-        $r = new HTTP_Request2();
-        $r->setMethod(HTTP_Request2::METHOD_GET);
-        $r->setUrl($url);
-        $resp = $r->send();
-        $this->log($resp->getStatus() . ' ' . $resp->getReasonPhrase(), 1);
-        //FIXME: check status
-
-        $parser = new Wrt3g_HtmlParser();
-        return $parser->status_noauth($resp->getBody());
+        return $this->loadStatus_NoAuth();
     }