namespace PhpXmlRpc;
+use PhpXmlRpc\Helper\Logger;
+
class Client
{
/// @todo: do these need to be public?
}
if (is_array($req)) {
- // $msg is an array of Requests
+ // $req is an array of Requests
$r = $this->multicall($req, $timeout, $method);
return $r;
}
// where req is a Request
- $req->debug = $this->debug;
+ $req->setDebug($this->debug);
if ($method == 'https') {
$r = $this->sendPayloadHTTPS(
$payload;
if ($this->debug > 1) {
- $this->debugMessage("---SENDING---\n$op\n---END---");
+ Logger::instance()->debugMessage("---SENDING---\n$op\n---END---");
}
if ($timeout > 0) {
* Requires curl to be built into PHP
* NB: CURL versions before 7.11.10 cannot use proxy to talk to https servers!
*
- * @param Request $msg
+ * @param Request $req
* @param string $server
* @param int $port
* @param int $timeout
* @param int $sslVersion
* @return Response
*/
- protected function sendPayloadCURL($msg, $server, $port, $timeout = 0, $username = '',
+ protected function sendPayloadCURL($req, $server, $port, $timeout = 0, $username = '',
$password = '', $authType = 1, $cert = '', $certPass = '', $caCert = '', $caCertDir = '',
$proxyHost = '', $proxyPort = 0, $proxyUsername = '', $proxyPassword = '', $proxyAuthType = 1, $method = 'https',
$keepAlive = false, $key = '', $keyPass = '', $sslVersion = 0)
}
// Only create the payload if it was not created previously
- if (empty($msg->payload)) {
- $msg->createPayload($this->request_charset_encoding);
+ if (empty($req->payload)) {
+ $req->createPayload($this->request_charset_encoding);
}
// Deflate request body and set appropriate request headers
- $payload = $msg->payload;
+ $payload = $req->payload;
if (function_exists('gzdeflate') && ($this->request_compression == 'gzip' || $this->request_compression == 'deflate')) {
if ($this->request_compression == 'gzip') {
$a = @gzencode($payload);
}
if ($this->debug > 1) {
- $this->debugMessage("---SENDING---\n$payload\n---END---");
- // let the client see this now in case http times out...
- flush();
+ Logger::instance()->debugMessage("---SENDING---\n$payload\n---END---");
}
if (!$keepAlive || !$this->xmlrpc_curl_handle) {
}
// results into variable
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
- if ($this->debug) {
- curl_setopt($curl, CURLOPT_VERBOSE, 1);
+ if ($this->debug > 1) {
+ curl_setopt($curl, CURLOPT_VERBOSE, true);
+ /// @todo allow callers to redirect curlopt_stderr to some stream which can be buffered
}
curl_setopt($curl, CURLOPT_USERAGENT, $this->user_agent);
// required for XMLRPC: post the data
}
}
// extra headers
- $headers = array('Content-Type: ' . $msg->content_type, 'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings));
+ $headers = array('Content-Type: ' . $req->content_type, 'Accept-Charset: ' . implode(',', $this->accepted_charset_encodings));
// if no keepalive is wanted, let the server know it in advance
if (!$keepAlive) {
$headers[] = 'Connection: close';
$message .= $name . ': ' . $val . "\n";
}
$message .= "---END---";
- $this->debugMessage($message);
+ Logger::instance()->debugMessage($message);
}
if (!$result) {
if (!$keepAlive) {
curl_close($curl);
}
- $resp = $msg->parseResponse($result, true, $this->return_type);
+ $resp = $req->parseResponse($result, true, $this->return_type);
// if we got back a 302, we can not reuse the curl handle for later calls
if ($resp->faultCode() == PhpXmlRpc::$xmlrpcerr['http_error'] && $keepAlive) {
curl_close($curl);
if ($this->return_type == 'xml') {
return $rets;
} elseif ($this->return_type == 'phpvals') {
- ///@todo test this code branch...
+ /// @todo test this code branch...
$rets = $result->value();
if (!is_array($rets)) {
return false; // bad return type from system.multicall
return $response;
}
}
-
- /**
- * Echoes a debug message, taking care of escaping it when not in console mode
- *
- * @param string $message
- */
- protected function debugMessage($message)
- {
- if (PHP_SAPI != 'cli') {
- print "<PRE>\n".htmlentities($message)."\n</PRE>";
- } else {
- print "\n$message\n";
- }
- // let the client see this now in case http times out...
- flush();
- }
}