From: x2000habouzit Date: Tue, 7 Sep 2004 19:38:15 +0000 (+0000) Subject: taken from http://xmlrpc-epi.sourceforge.net X-Git-Tag: xorg/old~1560 X-Git-Url: http://git.polytechnique.org/?a=commitdiff_plain;h=f4feb6fe3a4a2df00eb6cc1662ee97026b3de020;p=platal.git taken from http://xmlrpc-epi.sourceforge.net --- diff --git a/include/xml-rpc.inc.php b/include/xml-rpc.inc.php new file mode 100644 index 0000000..7a4c052 --- /dev/null +++ b/include/xml-rpc.inc.php @@ -0,0 +1,270 @@ + \n$http_request\n", $debug); + + fputs($query_fd, $http_request, strlen($http_request)); + + dbg1("receiving response...", $debug); + + $header_parsed = false; + + $line = fgets($query_fd, 4096); + while ($line) { + if (!$header_parsed) { + if ($line === "\r\n" || $line === "\n") { + $header_parsed = 1; + } + dbg2("got header - $line", $debug); + } + else { + $response_buf .= $line; + } + $line = fgets($query_fd, 4096); + } + + fclose($query_fd); + } + else { + dbg1("socket open failed", $debug); + } + } + else { + dbg1("missing param(s)", $debug); + } + + dbg1("got response:. \n$response_buf\n\n", $debug); + + return $response_buf; +} + +function xu_fault_code($code, $string) { + return array('faultCode' => $code, + 'faultString' => $string); +} + + +function find_and_decode_xml($buf, $debug) { + if (strlen($buf)) { + $xml_begin = substr($buf, strpos($buf, " 'xml', + * 'verbosity' => 'pretty', + * 'escaping' => array('markup', 'non-ascii', 'non-print'), + * 'version' => 'xmlrpc', + * 'encoding' => 'utf-8' + * ); + * or + * + * $output_options = array('output_type' => 'php'); + */ +function xu_rpc_http_concise($params) { + $host = $uri = $port = $method = $args = $debug = null; + $timeout = $user = $pass = $secure = $debug = null; + + extract($params); + + // default values + if(!$port) { + $port = 80; + } + if(!$uri) { + $uri = '/'; + } + if(!$output) { + $output = array(version => 'xmlrpc'); + } + + $response_buf = ""; + if ($host && $uri && $port) { + $request_xml = xmlrpc_encode_request($method, $args, $output); + $response_buf = xu_query_http_post($request_xml, $host, $uri, $port, $debug, + $timeout, $user, $pass, $secure); + + $retval = find_and_decode_xml($response_buf, $debug); + } + return $retval; +} + +/* call an xmlrpc method on a remote http server. legacy support. */ +function xu_rpc_http($method, $args, $host, $uri="/", $port=80, $debug=false, + $timeout=0, $user=false, $pass=false, $secure=false) { + return xu_rpc_http_concise( + array( + method => $method, + args => $args, + host => $host, + uri => $uri, + port => $port, + debug => $debug, + timeout => $timeout, + user => $user, + pass => $pass, + secure => $secure + )); +} + + + +function xu_is_fault($arg) { + // xmlrpc extension finally supports this. + return is_array($arg) ? xmlrpc_is_fault($arg) : false; +} + +/* sets some http headers and prints xml */ +function xu_server_send_http_response($xml) { + header("Content-type: text/xml"); + header("Content-length: " . strlen($xml) ); + echo $xml; +} + + +function dbg($msg) { + echo "

$msg

"; flush(); +} +function dbg1($msg, $debug_level) { + if ($debug_level >= 1) { + dbg($msg); + } +} +function dbg2($msg, $debug_level) { + if ($debug_level >= 2) { + dbg($msg); + } +} + + +?>