Exemplo n.º 1
0
 /**
  * 
  * 
  * @param string $method
  * @param array $parameters
  * @param null $identifier
  * @return type
  */
 public function encodeRequest($method, array $parameters, $identifier = null)
 {
     $dom = $this->buildDocument();
     $callElement = $dom->createElement("methodCall");
     $methodNameElement = $dom->createElement("methodName");
     $methodNameElement->appendChild(new DOMText($method));
     $paramsElement = $dom->createElement("params");
     foreach ($parameters as $param) {
         $rpcParameter = $this->parameterFactory->fromValue($param);
         $importedParamNode = $dom->importNode($this->parameterSerializer->getDomElementFromParameter($rpcParameter), true);
         $paramElement = $dom->createElement("param");
         $paramElement->appendChild($importedParamNode);
         $paramsElement->appendChild($paramElement);
     }
     $callElement->appendChild($methodNameElement);
     $callElement->appendChild($paramsElement);
     $dom->appendChild($callElement);
     return $dom->saveXML();
 }
 private function formatArray(XmlRpcParameter $parameter)
 {
     $typeElement = $this->domDocument->createElement($parameter->getType());
     $dataElement = $this->domDocument->createElement("data");
     foreach ($parameter->getValue() as $value) {
         $subParameter = $this->parameterFactory->fromValue($value);
         $valueElement = $this->domDocument->createElement("value");
         $valueElement->appendChild($this->getDomElementFromParameter($subParameter));
         $dataElement->appendChild($valueElement);
     }
     $typeElement->appendChild($dataElement);
     return $typeElement;
 }
 /**
  * 
  * @param DOMElement $element
  * @return \Mdjward\RpcApi\RequestEncoder\XmlRpc\XmlRpcParameter
  */
 public function getXmlRpcParameterFromDomElement(DOMElement $element)
 {
     return $this->parameterFactory->fromValue($this->getValueFromDomElement($element));
 }
 /**
  * @test
  */
 public function testGetDomElementFromParameterHandlesStruct()
 {
     $domDocument = new DOMDocument();
     $arrayValues = array("one" => 1, "two" => 2.0, "three" => "three", "four" => false, "five" => 5.123466, "SIX" => true);
     $structParameter = new XmlRpcParameter($arrayValues, XmlRpcParameter::TYPE_STRUCT);
     $parameterFactoryReal = new XmlRpcParameterFactory();
     $parameterFactoryMock = $this->buildXmlRpcParameterFactoryMock();
     $parameterFactoryMock->expects($this->exactly(count($arrayValues)))->method("fromValue")->will($this->returnCallback(function ($value) use($parameterFactoryReal) {
         return $parameterFactoryReal->fromValue($value);
     }));
     $serializer = new XmlRpcParameterSerializer($parameterFactoryMock, $domDocument);
     $structElement = $serializer->getDomElementFromParameter($structParameter);
     $comparitiveDomDocument = new DOMDocument();
     $comparitiveDomDocument->loadXML("<struct>" . "<member><name>one</name><value><int>1</int></value></member>" . "<member><name>two</name><value><int>2</int></value></member>" . "<member><name>three</name><value><string>three</string></value></member>" . "<member><name>four</name><value><boolean>false</boolean></value></member>" . "<member><name>five</name><value><double>5.123466</double></value></member>" . "<member><name>SIX</name><value><boolean>true</boolean></value></member>" . "</struct>");
     $this->assertEqualXMLStructure($comparitiveDomDocument->documentElement, $structElement);
 }