public function encode(\Esendex\Model\DispatchMessage $message) { if (strlen($message->originator()) < 1) { throw new ArgumentException("Originator is invalid"); } if (strlen($message->recipient()) < 1) { throw new ArgumentException("Recipient is invalid"); } if ($message->validityPeriod() > 72) { throw new ArgumentException("Validity too long, must be less or equal to than 72"); } $doc = new \SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\"?><messages />", 0, false, Api::NS); $doc->accountreference = $this->reference; $child = $doc->addChild("message"); $child->from = $message->originator(); $child->to = $message->recipient(); $child->body = $message->body(); $child->type = $message->type(); if ($message->validityPeriod() > 0) { $child->validity = $message->validityPeriod(); } if ($message->language() != null) { $child->lang = $message->language(); } return $doc->asXML(); }
/** * @test */ function encodeVoiceMessage() { $reference = "EX123456"; $message = new DispatchMessage(null, "4487654321", "Something to say", Message::VoiceType, 36, "fr-FR"); $parser = new DispatchXmlParser($reference); $doc = new \SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\"?><messages />", 0, false, Api::NS); $doc->addAttribute("xmlns", Api::NS); $doc->addChild("accountreference", $reference); $child = $doc->addChild("message"); $child->addChild("to", $message->recipient()); $child->addChild("body", $message->body()); $child->addChild("type", Message::VoiceType); $child->addChild("validity", $message->validityPeriod()); $child->addChild("lang", $message->language()); $expected = $doc->asXML(); $result = $parser->encode($message); $this->assertEquals($expected, $result); }