aboutsummaryrefslogtreecommitdiff
path: root/engine/classes/XMLRPCCall.php
diff options
context:
space:
mode:
Diffstat (limited to 'engine/classes/XMLRPCCall.php')
-rw-r--r--engine/classes/XMLRPCCall.php60
1 files changed, 60 insertions, 0 deletions
diff --git a/engine/classes/XMLRPCCall.php b/engine/classes/XMLRPCCall.php
new file mode 100644
index 000000000..09e8e6d6d
--- /dev/null
+++ b/engine/classes/XMLRPCCall.php
@@ -0,0 +1,60 @@
+<?php
+/**
+ * @class XMLRPCCall
+ * This class represents
+ * @author Curverider Ltd
+ */
+class XMLRPCCall
+{
+ /** Method name */
+ private $methodname;
+ /** Parameters */
+ private $params;
+
+ /**
+ * Construct a new XML RPC Call
+ *
+ * @param string $xml
+ */
+ function __construct($xml)
+ {
+ $this->parse($xml);
+ }
+
+ /**
+ * Return the method name associated with the call.
+ *
+ * @return string
+ */
+ public function getMethodName() { return $this->methodname; }
+
+ /**
+ * Return the parameters.
+ * Returns a nested array of XmlElement.
+ *
+ * @see XmlElement
+ * @return array
+ */
+ public function getParameters() { return $this->params; }
+
+ /**
+ * Parse the xml into its components according to spec.
+ * This first version is a little primitive.
+ *
+ * @param string $xml
+ */
+ private function parse($xml)
+ {
+ $xml = xml_to_object($xml);
+
+ // sanity check
+ if ((isset($xml->name)) && (strcasecmp($xml->name, "methodCall")!=0))
+ throw new CallException(elgg_echo('CallException:NotRPCCall'));
+
+ // method name
+ $this->methodname = $xml->children[0]->content;
+
+ // parameters
+ $this->params = $xml->children[1]->children;
+ }
+} \ No newline at end of file