File: xmlrpcs.php

package info (click to toggle)
php-codeigniter-framework 3.1.13%2Bdfsg1-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,228 kB
  • sloc: php: 37,178; xml: 205; makefile: 138; python: 66; sh: 65
file content (51 lines) | stat: -rw-r--r-- 1,388 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php

class Mock_Libraries_Xmlrpcs extends CI_Xmlrpcs {
	public $mock_payload = '';

	/**
	 * Act as a XML-RPC server, but save the response into $mock_public property instead of making output of it
	 */
	public function serve()
	{
		$r = $this->parseRequest();

		if (isset($r->method_name) && isset($this->config['functions'][$r->method_name])) {
			$callback = $this->config['functions'][$r->method_name]['function'];
			if (is_callable($callback)) {
				call_user_func($callback, $r->parameters);
			} else {
				throw new Exception('Invalid callback: ' . $callback);
			}
		}
	
		$payload = '<?xml version="1.0" encoding="'.$this->xmlrpc_defencoding.'"?'.'>'."\n".$this->debug_msg.$r->prepare_response();

		$this->mock_payload = "HTTP/1.1 200 OK\r\n";
		$this->mock_payload .= "Content-Type: text/xml\r\n";
		$this->mock_payload .= 'Content-Length: '.strlen($payload)."\r\n";

		$this->mock_payload .= "\r\n";

		$this->mock_payload .= $payload;
	}

	/**
	 * Mock XML request (example)
	 */
	public function xml_request()
	{
		// Return a mock XML request
		return '<?xml version="1.0"?>
        <methodCall>
            <methodName>Testmethod</methodName>
            <params>
                <param>
                    <value>
                        <string>Test</string>
                    </value>
                </param>
            </params>
        </methodCall>';
	}
}