check http response codes
authorChristian Weiske <cweiske@cweiske.de>
Thu, 16 Dec 2010 18:10:15 +0000 (19:10 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Thu, 16 Dec 2010 18:10:15 +0000 (19:10 +0100)
Wrt3g.php

index c71ae19..3b4d43d 100644 (file)
--- a/Wrt3g.php
+++ b/Wrt3g.php
@@ -115,6 +115,7 @@ class Wrt3g
         $r->addPostParameter('wait_time', 1);
 
         $resp = $r->send();
+        $this->checkResponseStatus($resp);
         return $resp;
     }//public function reboot()
 
@@ -143,7 +144,7 @@ class Wrt3g
         $r->setUrl($strUrlBase . '/index_wstatus2.asp');
         $this->log('Connecting to ' . $strUrlBase . '/index_wstatus2.asp', 1);
         $resp = $r->send();
-        $this->log($resp->getStatus() . ' ' . $resp->getReasonPhrase(), 1);
+        $this->checkResponseStatus($resp);
         $arRetval = $parser->index_wstatus2($resp->getBody());
 
         /**
@@ -152,6 +153,7 @@ class Wrt3g
         $r->setUrl($strUrlBase . '/index_wstatus1.asp');
         $this->log('Connecting to ' . $strUrlBase . '/index_wstatus1.asp', 1);
         $resp = $r->send();
+        $this->checkResponseStatus($resp);
         $body = $resp->getBody();
         $arRetval = array_merge($arRetval, $parser->index_wstatus1($body));
 
@@ -179,8 +181,7 @@ class Wrt3g
         $r->setMethod(HTTP_Request2::METHOD_GET);
         $r->setUrl($url);
         $resp = $r->send();
-        $this->log($resp->getStatus() . ' ' . $resp->getReasonPhrase(), 1);
-        //FIXME: check status
+        $this->checkResponseStatus($resp);
 
         $parser = new Wrt3g_HtmlParser();
 
@@ -192,6 +193,32 @@ class Wrt3g
 
 
     /**
+     * Checks the HTTP response code and throws an exception if it
+     * is not in the 200 range.
+     *
+     * @param HTTP_Request2_Response $resp HTTP response object
+     *
+     * @return void
+     *
+     * @throws Exception When the status is not 200-299
+     */
+    protected function checkResponseStatus(HTTP_Request2_Response $resp)
+    {
+        $nStatus = $resp->getStatus();
+        $this->log($nStatus . ' ' . $resp->getReasonPhrase(), 1);
+        if (intval($nStatus / 100) == 2) {
+            //2xx status is fine
+            return;
+        }
+
+        throw new Exception(
+            'HTTP Error: ' . $nStatus . ' ' . $resp->getReasonPhrase()
+        );
+    }
+
+
+
+    /**
      * Retrieves pc card/SIM status information
      *
      * @return array Array with several key-value pairs