X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=src%2FClient.php;h=c0d86c37dd433126481eed5248f16b6194b4db95;hb=5a6fe2c4be2af29d295b5756483bffa7f74193f6;hp=00195af36f6ebaa1b85b9bc7ef152a07eee0d588;hpb=58ef35a678d6b26c919245ff83e33e37135bae12;p=plcapi.git diff --git a/src/Client.php b/src/Client.php index 00195af..c0d86c3 100644 --- a/src/Client.php +++ b/src/Client.php @@ -2,6 +2,8 @@ namespace PhpXmlRpc; +use PhpXmlRpc\Helper\Logger; + class Client { /// @todo: do these need to be public? @@ -339,7 +341,7 @@ class Client * @param integer $timeout Connection timeout, in seconds, If unspecified, a platform specific timeout will apply * @param string $method if left unspecified, the http protocol chosen during creation of the object will be used * - * @return Response + * @return Response|Response[] */ public function send($req, $timeout = 0, $method = '') { @@ -350,7 +352,7 @@ class Client } if (is_array($req)) { - // $msg is an array of Requests + // $req is an array of Requests $r = $this->multicall($req, $timeout, $method); return $r; @@ -361,7 +363,7 @@ class Client } // where req is a Request - $req->debug = $this->debug; + $req->setDebug($this->debug); if ($method == 'https') { $r = $this->sendPayloadHTTPS( @@ -551,7 +553,7 @@ class Client $payload; if ($this->debug > 1) { - $this->debugMessage("---SENDING---\n$op\n---END---"); + Logger::instance()->debugMessage("---SENDING---\n$op\n---END---"); } if ($timeout > 0) { @@ -632,7 +634,7 @@ class Client * 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 @@ -655,7 +657,7 @@ class Client * @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) @@ -682,12 +684,12 @@ class Client } // 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); @@ -707,9 +709,7 @@ class Client } 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) { @@ -722,10 +722,11 @@ class Client } // 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 @@ -749,7 +750,7 @@ class Client } } // 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'; @@ -848,7 +849,7 @@ class Client $message .= $name . ': ' . $val . "\n"; } $message .= "---END---"; - $this->debugMessage($message); + Logger::instance()->debugMessage($message); } if (!$result) { @@ -864,7 +865,7 @@ class Client 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); @@ -987,7 +988,7 @@ class Client 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 @@ -1071,21 +1072,4 @@ class Client 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 "
\n".htmlentities($message)."\n
"; - } - else { - print "\n$message\n"; - } - // let the client see this now in case http times out... - flush(); - } }