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);
    }
}
Example #5
0
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);
		}
	}
}
Example #6
0
void AuthRequestParser::handleEndElement(const std::string&, const std::string&) {
    --depth_;
    if (depth_ == 0) {
        getElementGeneric()->setMessage(createSafeByteArray(Base64::decode(text_)));
    }
}
Example #7
0
void AuthRequestParser::handleStartElement(const std::string&, const std::string&, const AttributeMap& attribute) {
    if (depth_ == 0) {
        getElementGeneric()->setMechanism(attribute.getAttribute("mechanism"));
    }
    ++depth_;
}
Example #8
0
void AuthResponseParser::handleEndElement(const std::string&, const std::string&) {
	--depth;
	if (depth == 0) {
		getElementGeneric()->setValue(createSafeByteArray(Base64::decode(text)));
	}
}