public function start()
 {
     $content = parent::start();
     // false means cURL failed
     if ($content === false) {
         throw new Exception('cURL error: ' . $this->getErrorMessage());
     }
     // anything else than status code 2xx is most likely bad
     $iHttpCode = $this->getHttpCode();
     if ($iHttpCode < 200 || $iHttpCode > 299) {
         throw new Exception('Server error: ' . HttpHeader::getHttpCodeString($iHttpCode));
     }
     return $content;
 }
 public function start()
 {
     $content = parent::start();
     // false means cURL failed
     if ($content === false) {
         throw new Exception('cURL error: ' . $this->getErrorMessage());
     }
     // anything else than status code 2xx is most likely bad
     $iHttpCode = $this->getHTTPCode();
     if ($iHttpCode < 200 || $iHttpCode > 299) {
         throw new Exception('Server error: ' . HTTPHeader::getHTTPCodeString($iHttpCode));
     }
     // check if the we actually downloaded anything
     if (strlen($content) == 0) {
         throw new Exception('Empty profile data');
     }
     // trim extra profile data (groups, friends, most played games)
     if ($this->bTrimExtra) {
         $sEndToken = '</summary>';
         $iEndPos = strpos($content, $sEndToken);
         if ($iEndPos !== false) {
             $content = substr($content, 0, $iEndPos + strlen($sEndToken));
             $content .= "\n</profile>";
         }
     }
     // remove certain control characters that are misleadingly send by the API,
     // which are invalid in XML 1.0
     if ($this->bFilterCtlChars) {
         $aCtlChr = array();
         for ($i = 0; $i < 32; $i++) {
             // tab, lf and cr are allowed
             if ($i == 9 || $i == 10 || $i == 13) {
                 continue;
             }
             $aCtlChr[] = chr($i);
         }
         $content = str_replace($aCtlChr, '', $content);
     }
     return $content;
 }