Git init
[profile/ivi/libsoup2.4.git] / tests / xmlrpc-server.php
1 <?php
2
3 function paramfault ()
4 {
5         # xmlrpc-epi-php translates this into a real <fault>
6         $fault["faultCode"] = -32602;
7         $fault["faultString"] = "bad parameter";
8         return $fault;
9 }
10
11 # We only check the params in sum(), because that's the one that
12 # xmlrpc-test tests will fail if given bad args
13
14 function sum ($method_name, $params, $app_data)
15 {
16         if (xmlrpc_get_type ($params[0]) != "array")
17                 return paramfault();
18
19         $sum = 0;
20         foreach ($params[0] as $val) {
21                 if (xmlrpc_get_type ($val) != "int")
22                         return paramfault();
23                         
24                 $sum = $sum + $val;
25         }
26         return $sum;
27 }
28
29 function countBools ($method_name, $params, $app_data)
30 {
31         $counts["true"] = $counts["false"] = 0;
32         foreach ($params[0] as $val) {
33                 if ($val)
34                         $counts["true"] = $counts["true"] + 1;
35                 else
36                         $counts["false"] = $counts["false"] + 1;
37         }
38         return $counts;
39 }
40
41 function md5sum ($method_name, $params, $app_data)
42 {
43         $val = md5 ($params[0]->scalar, true);
44         xmlrpc_set_type ($val, "base64");
45         return $val;
46 }
47
48 function dateChange ($method_name, $params, $app_data)
49 {
50         $date_str = $params[0]->scalar;
51         $date = strptime ($date_str, "%Y%m%dT%H:%M:%S");
52
53         foreach ($params[1] as $name => $val) {
54                 if ($name == "date")
55                         continue;
56                 $date[$name] = $val;
57         }
58
59         $ret = sprintf ("%04d%02d%02dT%02d:%02d:%02d",
60                         $date["tm_year"] + 1900, $date["tm_mon"] + 1,
61                         $date["tm_mday"], $date["tm_hour"],
62                         $date["tm_min"], $date["tm_sec"]);
63         xmlrpc_set_type ($ret, "datetime");
64         return $ret;
65 }
66
67 function echo_ ($method_name, $params, $app_data)
68 {
69         return $params[0];
70 }
71
72 # Work around xmlrpc-epi-php lossage; otherwise the datetime values
73 # we return will sometimes get a DST adjustment we don't want.
74 putenv ("TZ=");
75
76 $xmlrpc_server = xmlrpc_server_create ();
77 xmlrpc_server_register_method($xmlrpc_server, "sum", "sum");
78 xmlrpc_server_register_method($xmlrpc_server, "countBools", "countBools");
79 xmlrpc_server_register_method($xmlrpc_server, "md5sum", "md5sum");
80 xmlrpc_server_register_method($xmlrpc_server, "dateChange", "dateChange");
81 xmlrpc_server_register_method($xmlrpc_server, "echo", "echo_");
82
83 $response = xmlrpc_server_call_method ($xmlrpc_server,
84                                        implode("\r\n", file('php://input')),
85                                        0, array ("output_type" => "xml"));
86 echo ($response);
87
88 xmlrpc_server_destroy ($xmlrpc_server);
89
90 ?>