use PhpXmlRpc\Helper\Http;
use PhpXmlRpc\Helper\XMLParser;
+use PhpXmlRpc\Helper\Logger;
class Request
{
public function parseResponse($data = '', $headersProcessed = false, $returnType = 'xmlrpcvals')
{
if ($this->debug) {
- // by maHo, replaced htmlspecialchars with htmlentities
- $this->debugMessage("---GOT---\n$data\n---END---");
+ Logger::instance()->debugMessage("---GOT---\n$data\n---END---");
}
$this->httpResponse = array('raw_data' => $data, 'headers' => array(), 'cookies' => array());
}
}
- if ($this->debug) {
- $start = strpos($data, '<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
- if ($start) {
- $start += strlen('<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
- $end = strpos($data, '-->', $start);
- $comments = substr($data, $start, $end - $start);
- $this->debugMessage("---SERVER DEBUG INFO (DECODED) ---\n\t" . str_replace("\n", "\n\t", base64_decode($comments))) . "\n---END---\n</PRE>";
- }
- }
-
// be tolerant of extra whitespace in response body
$data = trim($data);
$data = substr($data, 0, $pos + 17);
}
+ // try to 'guestimate' the character encoding of the received response
+ $respEncoding = XMLParser::guessEncoding(@$this->httpResponse['headers']['content-type'], $data);
+
+ if ($this->debug) {
+ $start = strpos($data, '<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
+ if ($start) {
+ $start += strlen('<!-- SERVER DEBUG INFO (BASE64 ENCODED):');
+ $end = strpos($data, '-->', $start);
+ $comments = substr($data, $start, $end - $start);
+ Logger::instance()->debugMessage("---SERVER DEBUG INFO (DECODED) ---\n\t" .
+ str_replace("\n", "\n\t", base64_decode($comments)) . "\n---END---", $respEncoding);
+ }
+ }
+
// if user wants back raw xml, give it to him
if ($returnType == 'xml') {
$r = new Response($data, 0, '', 'xml');
return $r;
}
- // try to 'guestimate' the character encoding of the received response
- $respEncoding = XMLParser::guessEncoding(@$this->httpResponse['headers']['content-type'], $data);
-
if ($respEncoding != '') {
// Since parsing will fail if charset is not specified in the xml prologue,
if (!in_array($respEncoding, array('UTF-8', 'US-ASCII')) && !XMLParser::hasEncoding($data)) {
if ($respEncoding == 'ISO-8859-1') {
$data = utf8_encode($data);
- }
- else {
+ } else {
if (extension_loaded('mbstring')) {
$data = mb_convert_encoding($data, 'UTF-8', $respEncoding);
} else {
$r = new Response(0, PhpXmlRpc::$xmlrpcerr['invalid_return'],
PhpXmlRpc::$xmlrpcstr['invalid_return']);
} else {
- if ($this->debug) {
- $this->debugMessage(
- "---PARSED---\n".var_export($xmlRpcParser->_xh['value'], true)."\n---END---", false
+ if ($this->debug > 1) {
+ Logger::instance()->debugMessage(
+ "---PARSED---\n".var_export($xmlRpcParser->_xh['value'], true)."\n---END---"
);
}
$v = &$xmlRpcParser->_xh['value'];
if ($xmlRpcParser->_xh['isf']) {
- /// @todo we should test here if server sent an int and a string,
- /// and/or coerce them into such...
+ /// @todo we should test here if server sent an int and a string, and/or coerce them into such...
if ($returnType == 'xmlrpcvals') {
$errNo_v = $v->structmem('faultCode');
$errStr_v = $v->structmem('faultString');
}
/**
- * Echoes a debug message, taking care of escaping it when not in console mode
+ * Enables/disables the echoing to screen of the xmlrpc responses received.
*
- * @param string $message
- * @param bool $encodeEntities when false, escapes using htmlspecialchars instead of htmlentities
+ * @param integer $in values 0, 1, 2 are supported
*/
- protected function debugMessage($message, $encodeEntities = true)
+ public function setDebug($in)
{
- if (PHP_SAPI != 'cli') {
- if ($encodeEntities)
- print "<PRE>\n".htmlentities($message)."\n</PRE>";
- else
- print "<PRE>\n".htmlspecialchars($message)."\n</PRE>";
- }
- else {
- print "\n$message\n";
- }
+ $this->debug = $in;
}
}