* @copyright 2014 Fabian Grutschus. All rights reserved. * @license BSD * @link http://github.com/fabiang/xmpp */ namespace Fabiang\Xmpp\Exception\Stream; use Fabiang\Xmpp\Exception\RuntimeException; use Fabiang\Xmpp\Event\XMLEvent; /** * Exception class for error generated by stream, * * @package Xmpp\Exception\Stream */ class StreamErrorException extends RuntimeException { /** * XML content. * * @var string */ protected $content; /** * Create exception from XMLEvent object. * * @param \Fabiang\Xmpp\Event\XMLEvent $event XMLEvent object * @return static */ public static function createFromEvent(XMLEvent $event) { /* @var $element \DOMElement */ list($element) = $event->getParameters(); /* @var $first \DOMElement */ $first = $element->firstChild; if (null !== $first && XML_ELEMENT_NODE === $first->nodeType) { $message = 'Stream Error: "' . $first->localName . '"'; } else { $message = 'Generic stream error'; } $exception = new static($message); $exception->setContent($element->ownerDocument->saveXML($element)); return $exception; } /** * Get xml content. * * @return string */ public function getContent() { return $this->content; } /** * Set XML contents. * * @param string $content * @return $this */ public function setContent($content) { $this->content = (string) $content; return $this; } }