PageRenderTime 49ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/scala/com/mishlabs/xmpp/protocol/iq/Error.scala

http://github.com/tomerd/scala-xmpp
Scala | 42 lines | 30 code | 12 blank | 0 comment | 7 complexity | 84b364fd0156078633d1389ba8155a5b MD5 | raw file
  1. package com.mishlabs.xmpp
  2. package protocol
  3. package iq
  4. import scala.collection._
  5. import scala.xml._
  6. import Protocol._
  7. object Error
  8. {
  9. val iqType = IQTypeEnumeration.Error
  10. def apply(iq:IQ, condition:StanzaErrorCondition.Value, description:Option[String]=None):Error = apply(iq.id, iq.from, iq.to, iq.extension, condition, description)
  11. def apply(id:Option[String], to:Option[JID], from:Option[JID], extension:Option[Extension], condition:StanzaErrorCondition.Value, description:Option[String]):Error =
  12. {
  13. val xml = IQ.error(id, to, from, extension, condition, description)
  14. apply(xml)
  15. }
  16. def apply(xml:Node):Error = new Error(xml)
  17. def unapply(error:Error):Option[(Option[String], Option[JID], Option[JID], Option[StanzaErrorCondition.Value], Option[String])] = Some(error.id, error.to, error.from, error.condition, error.description)
  18. }
  19. class Error(xml:Node) extends IQ(xml, Error.iqType)
  20. {
  21. private val error = (xml \ "error").length match
  22. {
  23. case 1 => Some(StanzaError((xml \ "error")(0)))
  24. case _ => None
  25. }
  26. val errorType:Option[StanzaErrorAction.Value] = if (error.isDefined) error.get.errorType else None
  27. val condition:Option[StanzaErrorCondition.Value] = if (error.isDefined) Some(error.get.condition) else None
  28. val description:Option[String] = if (error.isDefined) error.get.description else None
  29. val otherConditions:Option[Seq[String]] =if (error.isDefined) error.get.otherConditions else None
  30. }