summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Parser')
-rw-r--r--Swiften/Parser/AuthSuccessParser.cpp24
-rw-r--r--Swiften/Parser/AuthSuccessParser.h16
-rw-r--r--Swiften/Parser/SConscript1
3 files changed, 36 insertions, 5 deletions
diff --git a/Swiften/Parser/AuthSuccessParser.cpp b/Swiften/Parser/AuthSuccessParser.cpp
new file mode 100644
index 0000000..2dc2aa2
--- /dev/null
+++ b/Swiften/Parser/AuthSuccessParser.cpp
@@ -0,0 +1,24 @@
+#include "Swiften/Parser/AuthSuccessParser.h"
+#include "Swiften/StringCodecs/Base64.h"
+
+namespace Swift {
+
+AuthSuccessParser::AuthSuccessParser() : GenericElementParser<AuthSuccess>(), depth(0) {
+}
+
+void AuthSuccessParser::handleStartElement(const String&, const String&, const AttributeMap&) {
+ ++depth;
+}
+
+void AuthSuccessParser::handleEndElement(const String&, const String&) {
+ --depth;
+ if (depth == 0) {
+ getElementGeneric()->setValue(Base64::decode(text));
+ }
+}
+
+void AuthSuccessParser::handleCharacterData(const String& text) {
+ this->text += text;
+}
+
+}
diff --git a/Swiften/Parser/AuthSuccessParser.h b/Swiften/Parser/AuthSuccessParser.h
index bb6515d..5d987c5 100644
--- a/Swiften/Parser/AuthSuccessParser.h
+++ b/Swiften/Parser/AuthSuccessParser.h
@@ -1,14 +1,20 @@
-#ifndef SWIFTEN_AUTHSUCCESSPARSER_H
-#define SWIFTEN_AUTHSUCCESSPARSER_H
+#pragma once
#include "Swiften/Parser/GenericElementParser.h"
#include "Swiften/Elements/AuthSuccess.h"
+#include "Swiften/Base/String.h"
namespace Swift {
class AuthSuccessParser : public GenericElementParser<AuthSuccess> {
public:
- AuthSuccessParser() : GenericElementParser<AuthSuccess>() {}
+ AuthSuccessParser();
+
+ virtual void handleStartElement(const String&, const String& ns, const AttributeMap&);
+ virtual void handleEndElement(const String&, const String& ns);
+ virtual void handleCharacterData(const String&);
+
+ private:
+ int depth;
+ String text;
};
}
-
-#endif
diff --git a/Swiften/Parser/SConscript b/Swiften/Parser/SConscript
index d04712c..1e1dcd8 100644
--- a/Swiften/Parser/SConscript
+++ b/Swiften/Parser/SConscript
@@ -1,56 +1,57 @@
Import("swiften_env")
myenv = swiften_env.Clone()
myenv.MergeFlags(swiften_env["BOOST_FLAGS"])
myenv.MergeFlags(swiften_env.get("LIBXML_FLAGS", ""))
myenv.MergeFlags(swiften_env.get("EXPAT_FLAGS", ""))
sources = [
"AuthRequestParser.cpp",
"AuthChallengeParser.cpp",
+ "AuthSuccessParser.cpp",
"AuthResponseParser.cpp",
"CompressParser.cpp",
"ElementParser.cpp",
"IQParser.cpp",
"MessageParser.cpp",
"PayloadParser.cpp",
"PayloadParserFactory.cpp",
"PayloadParserFactoryCollection.cpp",
"PayloadParsers/BodyParser.cpp",
"PayloadParsers/DiscoInfoParser.cpp",
"PayloadParsers/ErrorParser.cpp",
"PayloadParsers/FullPayloadParserFactoryCollection.cpp",
"PayloadParsers/PriorityParser.cpp",
"PayloadParsers/PrivateStorageParser.cpp",
"PayloadParsers/RawXMLPayloadParser.cpp",
"PayloadParsers/ResourceBindParser.cpp",
"PayloadParsers/RosterParser.cpp",
"PayloadParsers/SecurityLabelParser.cpp",
"PayloadParsers/SecurityLabelsCatalogParser.cpp",
"PayloadParsers/SoftwareVersionParser.cpp",
"PayloadParsers/StorageParser.cpp",
"PayloadParsers/StatusParser.cpp",
"PayloadParsers/StatusShowParser.cpp",
"PayloadParsers/VCardParser.cpp",
"PayloadParsers/VCardUpdateParser.cpp",
"PlatformXMLParserFactory.cpp",
"PresenceParser.cpp",
"SerializingParser.cpp",
"StanzaParser.cpp",
"StreamFeaturesParser.cpp",
"XMLParser.cpp",
"XMLParserClient.cpp",
"XMLParserFactory.cpp",
"XMPPParser.cpp",
"XMPPParserClient.cpp",
]
if myenv.get("HAVE_EXPAT", 0) :
myenv.Append(CPPDEFINES = "HAVE_EXPAT")
sources += ["ExpatParser.cpp"]
if myenv.get("HAVE_LIBXML", 0) :
myenv.Append(CPPDEFINES = "HAVE_LIBXML")
sources += ["LibXMLParser.cpp"]
objects = myenv.StaticObject(sources)
swiften_env.Append(SWIFTEN_OBJECTS = [objects])