ignore releases dir
[linksys-wrt3g-tools.git] / Wrt3g / RequestObserver.php
1 <?php
2 /**
3  * Part of Linksys WRT3G tools
4  *
5  * PHP version 5
6  *
7  * @category Tools
8  * @package  linksys-wrt3g-tools
9  * @author   Christian Weiske <cweiske@cweiske.de>
10  * @license  AGPL v3
11  * @link     http://cweiske.de/linksys-wrt3g-tools.htm
12  */
13
14 /**
15  * Observer to catch debugging data from the HTTP request.
16  *
17  * @category Tools
18  * @package  linksys-wrt3g-tools
19  * @author   Christian Weiske <cweiske@cweiske.de>
20  * @license  AGPL v3
21  * @link     http://cweiske.de/linksys-wrt3g-tools.htm
22  */
23 class Wrt3g_RequestObserver implements SplObserver
24 {
25     protected $wrt3g;
26     protected static $supportedEvents = array(
27         'connect', 'sentHeaders', 'receivedBody', 'disconnect'
28     );
29
30     /**
31      * Create new instance
32      *
33      * @param Wrt3g $wrt3g Logger
34      */ 
35     public function __construct(Wrt3g $wrt3g)
36     {
37         $this->wrt3g = $wrt3g;
38     }
39
40
41
42     /**
43      * Receive notification from HTTP_Request2
44      *
45      * @param SplSubject $subject The request object
46      *
47      * @return void
48      */
49     public function update(SplSubject $subject)
50     {
51         $event = $subject->getLastEvent();
52         if (!in_array($event['name'], self::$supportedEvents)) {
53             return;
54         }
55
56         if ($event['name'] == 'receivedBody') {
57             $resp = $event['data'];
58             $event['data']
59                 = $resp->getStatus() . ' ' . $resp->getReasonPhrase() . "\n"
60                 . 'Header: ' . var_export($resp->getHeader(), true)
61                 . $resp->getBody() . "\n----\n";
62         }
63
64         $this->wrt3g->log(
65             'event: ' . $event['name'] . ', '
66             . 'data: ' . $event['data'],
67             3
68         );
69     }
70 }
71
72
73 ?>