make the request observer work correctly, remove response logging in main class
[linksys-wrt3g-tools.git] / Wrt3g.php
index 3b4d43d28fe48ff3a955434d64d23262fe0a9f2d..ee48eca8437c4db7c73773ca767b6c3896eff902 100644 (file)
--- a/Wrt3g.php
+++ b/Wrt3g.php
@@ -12,7 +12,7 @@
  */
 require_once 'HTTP/Request2.php';
 require_once 'Wrt3g/HtmlParser.php';
-
+require_once 'Wrt3g/RequestObserver.php';
 
 /**
  * Main class to interact with the router.
@@ -51,6 +51,7 @@ class Wrt3g
      * 0 - no debug logging
      * 1 - show important details (connected URLs)
      * 2 - show internal details
+     * 3 - show HTTP requests and responses
      *
      * @var integer
      */
@@ -95,6 +96,24 @@ class Wrt3g
 
 
 
+    /**
+     * Creates a new HTTP_Request2 object, attaches an observer
+     * if necessary and returns it.
+     *
+     * @return HTTP_Request2
+     */
+    protected function createRequest()
+    {
+        $r = new $this->requestClass();
+        if ($this->verbosity >= 3) {
+            //register observer
+            $r->attach(new Wrt3g_RequestObserver($this));
+        }
+        return $r;
+    }
+
+
+
     /**
      * Reboots the router.
      *
@@ -107,7 +126,7 @@ class Wrt3g
         $url = $this->getAuthBaseUrl() . '/apply.cgi';
         $this->log('Connecting to ' . $url);
 
-        $r = new $this->requestClass();
+        $r = $this->createRequest();
         $r->setMethod(HTTP_Request2::METHOD_POST);
         $r->setUrl($url);
         $r->addPostParameter('action', 'Reboot');
@@ -139,7 +158,7 @@ class Wrt3g
         /**
          * Connection status
          */
-        $r = new $this->requestClass();
+        $r = $this->createRequest();
         $r->setMethod(HTTP_Request2::METHOD_GET);
         $r->setUrl($strUrlBase . '/index_wstatus2.asp');
         $this->log('Connecting to ' . $strUrlBase . '/index_wstatus2.asp', 1);
@@ -177,7 +196,7 @@ class Wrt3g
         $url = $strUrlBase . '/Status_NoAuth.asp';
         $this->log('Connecting to ' . $url, 1);
 
-        $r = new $this->requestClass();
+        $r = $this->createRequest();
         $r->setMethod(HTTP_Request2::METHOD_GET);
         $r->setUrl($url);
         $resp = $r->send();
@@ -261,8 +280,9 @@ class Wrt3g
     /**
      * Log a message to stdout.
      *
-     * @param string  $msg   Message to display
-     * @param integer $level Log level, see $verbosity
+     * @param string|object  $msg   Message to display. May even be a response
+     *                              object
+     * @param integer        $level Log level, see $verbosity
      *
      * @return void
      */