diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2010-12-17 19:37:24 +0100 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2010-12-17 19:37:24 +0100 |
| commit | ec85023a1006f6f2fe3ea947b6be81bb4515aa8a (patch) | |
| tree | a03b92264a3b5cc3cb3e8e0b54d473e301878ef9 | |
| parent | 94390ea5bb0b12513e5bd39e485157365b097272 (diff) | |
| download | linksys-wrt3g-tools-ec85023a1006f6f2fe3ea947b6be81bb4515aa8a.tar.gz linksys-wrt3g-tools-ec85023a1006f6f2fe3ea947b6be81bb4515aa8a.zip | |
display more data by attaching an observer
| -rw-r--r-- | Wrt3g.php | 42 | ||||
| -rw-r--r-- | Wrt3g/RequestObserver.php | 58 |
2 files changed, 94 insertions, 6 deletions
@@ -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 */ @@ -96,6 +97,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. * * @return HTTP_Request2_Response @@ -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(); @@ -204,6 +223,8 @@ class Wrt3g */ protected function checkResponseStatus(HTTP_Request2_Response $resp) { + $this->log($resp, 3); + $nStatus = $resp->getStatus(); $this->log($nStatus . ' ' . $resp->getReasonPhrase(), 1); if (intval($nStatus / 100) == 2) { @@ -261,14 +282,23 @@ 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 */ public function log($msg, $level = 1) { if ($this->verbosity >= $level) { + if ($msg instanceof HTTP_Request2_Response) { + echo "HTTP Response:\n"; + echo $msg->getStatus() . ' ' . $msg->getReasonPhrase() . "\n"; + echo 'Header: '; + var_export($msg->getHeader()); + echo $msg->getBody() . "\n----\n"; + return; + } echo $msg . "\n"; } } diff --git a/Wrt3g/RequestObserver.php b/Wrt3g/RequestObserver.php new file mode 100644 index 0000000..1e5224f --- /dev/null +++ b/Wrt3g/RequestObserver.php @@ -0,0 +1,58 @@ +<?php +/** + * Part of Linksys WRT3G tools + * + * 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 + */ + +/** + * Observer to catch debugging data from the HTTP request. + * + * @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_RequestObserver implements SplObserver +{ + protected $wrt3g; + + /** + * Create new instance + * + * @param Wrt3g $wrt3g Logger + */ + public function __construct(Wrt3g $wrt3g) + { + $this->wrt3g = $wrt3g; + } + + + + /** + * Receive notification from HTTP_Request2 + * + * @param SplSubject $subject The request object + * + * @return void + */ + public function update(SplSubject $subject) + { + $event = $subject->getLastEvent(); + $this->wrt3g->log( + 'event: ' . $event['name'] . "\n" + . 'data: ' . $event['data'], + 3 + ); + } +} + + +?>
\ No newline at end of file |
