/** * Обработка запроса, отправка ответа клиенту. */ public function handle() { $sName = 'http://www.free-lance.ru/external/api/' . $this->_sApi; if ($api = externalApi::getInst($sName, $this->_sess)) { $this->_aRespData = $api->invoke($this->_sMethod, $this->_aParams); $this->response(); } else { $this->error(EXTERNAL_WARN_UNDEFINED_API); } }
/** * Обработка метода. Инициализирует api, соотвествующее пространству имен данного метода, * делает вызов, формирует тег результата. * * @param DOMNode $m тег метода. */ public function handleMethod($m) { static $pos = 1; $name = $m->localName; $this->errorSetContext(array('tag' => $name, 'ns' => $m->namespaceURI, 'pos' => $pos)); if ($api = externalApi::getInst($m->namespaceURI, $this->_sess)) { $args = null; foreach ($m->childNodes as $pr) { if ($pr->localName == self::XML_VAR_PRM_TAG) { $args[] = $this->varXml2Php($pr); } } $result = $api->invoke($name, $args); if ($u = $m->getAttribute(self::XML_METHOD_U_ATT)) { $uatt = ' ' . self::XML_METHOD_U_ATT . '="' . $u . '"'; } $xml_prefix = $api->getDefaultPrefix(); $this->_responseBody .= "<{$xml_prefix}:{$name}{$uatt}>" . $this->varPhp2Xml($result, self::XML_VAR_RES_TAG) . "</{$xml_prefix}:{$name}>"; $this->_responseXmlns[$xml_prefix] = $m->namespaceURI; } else { $this->warning(EXTERNAL_WARN_UNDEFINED_API); } $this->errorSetContext(null); ++$pos; }