void StreamFeaturesParser::handleStartElement(const std::string& element, const std::string& ns, const AttributeMap&) { if (currentDepth_ == 1) { if (element == "starttls" && ns == "urn:ietf:params:xml:ns:xmpp-tls") { getElementGeneric()->setHasStartTLS(); } else if (element == "session" && ns == "urn:ietf:params:xml:ns:xmpp-session") { getElementGeneric()->setHasSession(); } else if (element == "bind" && ns == "urn:ietf:params:xml:ns:xmpp-bind") { getElementGeneric()->setHasResourceBind(); } else if (element == "sm" && ns == "urn:xmpp:sm:2") { getElementGeneric()->setHasStreamManagement(); } else if (element == "mechanisms" && ns == "urn:ietf:params:xml:ns:xmpp-sasl") { inMechanisms_ = true; } else if (element == "compression" && ns == "http://jabber.org/features/compress") { inCompression_ = true; } } else if (currentDepth_ == 2) { if (inCompression_ && element == "method") { inCompressionMethod_ = true; currentText_ = ""; } else if (inMechanisms_ && element == "mechanism") { inMechanism_ = true; currentText_ = ""; } } ++currentDepth_; }
void StreamFeaturesParser::handleEndElement(const std::string&, const std::string&) { --currentDepth_; if (currentDepth_ == 1) { inCompression_ = false; inMechanisms_ = false; } else if (currentDepth_ == 2) { if (inCompressionMethod_) { getElementGeneric()->addCompressionMethod(currentText_); inCompressionMethod_ = false; } else if (inMechanism_) { getElementGeneric()->addAuthenticationMechanism(currentText_); inMechanism_ = false; } } }
void StanzaAckParser::handleStartElement(const std::string&, const std::string&, const AttributeMap& attributes) { if (depth == 0) { std::string handledStanzasString = attributes.getAttribute("h"); try { getElementGeneric()->setHandledStanzasCount(boost::lexical_cast<int>(handledStanzasString)); } catch (const boost::bad_lexical_cast &) { } } ++depth; }
void ComponentHandshakeParser::handleEndElement(const std::string&, const std::string&) { --depth; if (depth == 0) { getElementGeneric()->setData(text); } }
void StreamErrorParser::handleEndElement(const std::string& element, const std::string& ns) { --level; if (level == ElementLevel && ns == "urn:ietf:params:xml:ns:xmpp-streams") { if (element == "text") { getElementGeneric()->setText(currentText); } else if (element == "bad-format") { getElementGeneric()->setType(StreamError::BadFormat); } else if(element == "bad-namespace-prefix") { getElementGeneric()->setType(StreamError::BadNamespacePrefix); } else if(element == "conflict") { getElementGeneric()->setType(StreamError::Conflict); } else if(element == "connection-timeout") { getElementGeneric()->setType(StreamError::ConnectionTimeout); } else if(element == "host-gone") { getElementGeneric()->setType(StreamError::HostGone); } else if(element == "host-unknown") { getElementGeneric()->setType(StreamError::HostUnknown); } else if(element == "improper-addressing") { getElementGeneric()->setType(StreamError::ImproperAddressing); } else if(element == "internal-server-error") { getElementGeneric()->setType(StreamError::InternalServerError); } else if(element == "invalid-from") { getElementGeneric()->setType(StreamError::InvalidFrom); } else if(element == "invalid-id") { getElementGeneric()->setType(StreamError::InvalidID); } else if(element == "invalid-namespace") { getElementGeneric()->setType(StreamError::InvalidNamespace); } else if(element == "invalid-xml") { getElementGeneric()->setType(StreamError::InvalidXML); } else if(element == "not-authorized") { getElementGeneric()->setType(StreamError::NotAuthorized); } else if(element == "not-well-formed") { getElementGeneric()->setType(StreamError::NotWellFormed); } else if(element == "policy-violation") { getElementGeneric()->setType(StreamError::PolicyViolation); } else if(element == "remote-connection-failed") { getElementGeneric()->setType(StreamError::RemoteConnectionFailed); } else if(element == "reset") { getElementGeneric()->setType(StreamError::Reset); } else if(element == "resource-constraint") { getElementGeneric()->setType(StreamError::ResourceConstraint); } else if(element == "restricted-xml") { getElementGeneric()->setType(StreamError::RestrictedXML); } else if(element == "see-other-host") { getElementGeneric()->setType(StreamError::SeeOtherHost); } else if(element == "system-shutdown") { getElementGeneric()->setType(StreamError::SystemShutdown); } else if(element == "undefined-condition") { getElementGeneric()->setType(StreamError::UndefinedCondition); } else if(element == "unsupported-encoding") { getElementGeneric()->setType(StreamError::UnsupportedEncoding); } else if(element == "unsupported-stanza-type") { getElementGeneric()->setType(StreamError::UnsupportedStanzaType); } else if(element == "unsupported-version") { getElementGeneric()->setType(StreamError::UnsupportedVersion); } else { getElementGeneric()->setType(StreamError::UndefinedCondition); } } }
void AuthRequestParser::handleEndElement(const std::string&, const std::string&) { --depth_; if (depth_ == 0) { getElementGeneric()->setMessage(createSafeByteArray(Base64::decode(text_))); } }
void AuthRequestParser::handleStartElement(const std::string&, const std::string&, const AttributeMap& attribute) { if (depth_ == 0) { getElementGeneric()->setMechanism(attribute.getAttribute("mechanism")); } ++depth_; }
void AuthResponseParser::handleEndElement(const std::string&, const std::string&) { --depth; if (depth == 0) { getElementGeneric()->setValue(createSafeByteArray(Base64::decode(text))); } }