|
|
- <?php
-
- /*
- This file is part of ActiveLink PHP XML Package (www.active-link.com).
- Copyright (c) 2002-2004 by Zurab Davitiani
-
- You can contact the author of this software via E-mail at
- hattrick@mailcan.com
-
- ActiveLink PHP XML Package is free software; you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- ActiveLink PHP XML Package is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with ActiveLink PHP XML Package; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
- /*
- * requires HTTPClient, XML and XMLDocument classes
- */
-
- import("org.active-link.net.HTTPClient");
- import("org.active-link.xml.XML");
- import("org.active-link.xml.XMLDocument");
-
- /**
- * XMLRPCClient class provides XML-RPC client capabilities
- * @class XMLRPCClient
- * @package org.active-link.xml
- * @author Zurab Davitiani
- * @version 0.4.0
- * @extends HTTPClient
- * @requires HTTPClient, XML, XMLDocument
- * @see HTTPClient
- */
-
- class XMLRPCClient extends HTTPClient {
-
- var $xml;
- var $xmlDoc;
- var $params;
-
- /**
- * XMLRPCClient client class constructor accepts host (required) and port (optional, default 80) arguments
- * @method XMLRPCClient
- * @param string host
- * @param optional int port
- */
- function XMLRPCClient($host, $port = 80) {
- $this->HTTPClient($host, $port);
- $this->setRequestMethod("POST");
- $this->addRequestHeaderRaw("Content-type: text/xml");
- $this->xml = new XML("methodCall");
- $this->xml->setTagContent("", "methodCall/methodName");
- $this->xml->setTagContent("", "methodCall/params");
- $this->xmlDoc = new XMLDocument();
- $this->xmlDoc->setXML($this->xml);
- $paramsBranchArray = &$this->xml->getBranches("methodCall", "params");
- $this->params = &$paramsBranchArray[0];
- // this call not necessary if we can somehow update body before HTTPClient->sendRequest
- $this->setRequestBody($this->xmlDoc->getXMLString());
- }
-
- /**
- * Adds a parameter to a method call in XMLRPC request
- * @method addParam
- * @param string paramType
- * @param mixed paramValue
- * @returns none
- */
- function addParam($paramType, $paramValue) {
- $newParam = new XMLBranch("param");
- $newParam->setTagContent($paramValue, "param/value/$paramType");
- $this->params->addXMLBranch($newParam);
- // this call not necessary if we can somehow update body before HTTPClient->sendRequest
- $this->setRequestBody($this->xmlDoc->getXMLString());
- }
-
- /**
- * Sets method name in XMLRPC request
- * @method setMethodName
- * @param string methodName
- * @returns none
- */
- function setMethodName ($methodName) {
- $this->xml->setTagContent($methodName, "methodCall/methodName");
- // this call not necessary if we can somehow update body before HTTPClient->sendRequest
- $this->setRequestBody($this->xmlDoc->getXMLString());
- }
-
- /**
- * Sets XMLRPC request by supplying an XMLDocument object
- * @method setRequestXML
- * @param object XMLDocument
- * @returns true if successful, false otherwise
- */
- function setRequestXML(&$XMLDocument) {
- if(is_object($XMLDocument) && strtolower(get_class($XMLDocument)) == "xmldocument") {
- $this->xmlDoc = &$XMLDocument;
- $this->xml = &$this->xmlDoc->getXML();
- $this->params = &$this->xml->getBranches("methodCall", "params");
- // this call not necessary if we can somehow update body before HTTPClient->sendRequest
- $this->setRequestBody(htmlspecialchars($this->xmlDoc->getXMLString()));
- $success = true;
- }
- else
- $success = false;
- return $success;
- }
-
- }
-
- ?>
|