diff options
author | Remko Tronçon <git@el-tramo.be> | 2011-06-08 21:47:16 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2011-06-08 21:47:16 (GMT) |
commit | 1cea8b4c47e8b03aea7e452fb49b8dea3233eb36 (patch) | |
tree | fc97e18fc08efc6495262c823fdda5be4e9a9c67 /Swiften/Parser/PayloadParsers | |
parent | 9c6f742cbb729ecd4f78c33f5b630f670f976715 (diff) | |
download | swift-1cea8b4c47e8b03aea7e452fb49b8dea3233eb36.zip swift-1cea8b4c47e8b03aea7e452fb49b8dea3233eb36.tar.bz2 |
Put XEP-0082 datetime parsing into Base.
Diffstat (limited to 'Swiften/Parser/PayloadParsers')
5 files changed, 6 insertions, 70 deletions
diff --git a/Swiften/Parser/PayloadParsers/DelayParser.cpp b/Swiften/Parser/PayloadParsers/DelayParser.cpp index e2a6bad..e18d09d 100644 --- a/Swiften/Parser/PayloadParsers/DelayParser.cpp +++ b/Swiften/Parser/PayloadParsers/DelayParser.cpp @@ -6,27 +6,16 @@ #include <Swiften/Parser/PayloadParsers/DelayParser.h> -#include <locale> - -#include <boost/date_time/time_facet.hpp> -#include <boost/date_time/posix_time/posix_time.hpp> +#include <Swiften/Base/DateTime.h> namespace Swift { -DelayParser::DelayParser(const std::locale& locale) : locale(locale), level_(0) { -} - -boost::posix_time::ptime DelayParser::dateFromString(const std::string& string) { - std::istringstream stream(string); - stream.imbue(locale); - boost::posix_time::ptime result(boost::posix_time::not_a_date_time); - stream >> result; - return result; +DelayParser::DelayParser() : level_(0) { } void DelayParser::handleStartElement(const std::string& /*element*/, const std::string& /*ns*/, const AttributeMap& attributes) { if (level_ == 0) { - boost::posix_time::ptime stamp = dateFromString(attributes.getAttribute("stamp")); + boost::posix_time::ptime stamp = stringToDateTime(attributes.getAttribute("stamp")); getPayloadInternal()->setStamp(stamp); if (!attributes.getAttribute("from").empty()) { std::string from = attributes.getAttribute("from"); diff --git a/Swiften/Parser/PayloadParsers/DelayParser.h b/Swiften/Parser/PayloadParsers/DelayParser.h index 02103d9..144220a 100644 --- a/Swiften/Parser/PayloadParsers/DelayParser.h +++ b/Swiften/Parser/PayloadParsers/DelayParser.h @@ -12,17 +12,13 @@ namespace Swift { class DelayParser : public GenericPayloadParser<Delay> { public: - DelayParser(const std::locale& locale); + DelayParser(); virtual void handleStartElement(const std::string& element, const std::string&, const AttributeMap& attributes); virtual void handleEndElement(const std::string& element, const std::string&); virtual void handleCharacterData(const std::string& data); private: - boost::posix_time::ptime dateFromString(const std::string& string); - - private: - std::locale locale; int level_; }; } diff --git a/Swiften/Parser/PayloadParsers/DelayParserFactory.cpp b/Swiften/Parser/PayloadParsers/DelayParserFactory.cpp deleted file mode 100644 index 48841d2..0000000 --- a/Swiften/Parser/PayloadParsers/DelayParserFactory.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright (c) 2010 Kevin Smith - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#include <Swiften/Parser/PayloadParsers/DelayParserFactory.h> - -#include <boost/date_time/posix_time/posix_time.hpp> -#include <boost/date_time/time_facet.hpp> - -namespace Swift { - -DelayParserFactory::DelayParserFactory() { - boost::posix_time::time_input_facet* facet = new boost::posix_time::time_input_facet("%Y-%m-%d %H:%M:%S%F%Q"); - locale = std::locale(std::locale::classic(), facet); -} - -} diff --git a/Swiften/Parser/PayloadParsers/DelayParserFactory.h b/Swiften/Parser/PayloadParsers/DelayParserFactory.h deleted file mode 100644 index 7dde35e..0000000 --- a/Swiften/Parser/PayloadParsers/DelayParserFactory.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2010 Kevin Smith - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. - */ - -#pragma once - -#include <Swiften/Parser/PayloadParserFactory.h> -#include <Swiften/Parser/PayloadParsers/DelayParser.h> - -namespace Swift { - class PayloadParserFactoryCollection; - - class DelayParserFactory : public PayloadParserFactory { - public: - DelayParserFactory(); - - virtual bool canParse(const std::string& /*element*/, const std::string& ns, const AttributeMap&) const { - return ns == "urn:xmpp:delay"; - } - - virtual PayloadParser* createPayloadParser() { - return new DelayParser(locale); - } - - private: - std::locale locale; - }; -} diff --git a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp index 88a7bb6..4b143fd 100644 --- a/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp +++ b/Swiften/Parser/PayloadParsers/FullPayloadParserFactoryCollection.cpp @@ -38,7 +38,7 @@ #include <Swiften/Parser/PayloadParsers/VCardParserFactory.h> #include <Swiften/Parser/PayloadParsers/RawXMLPayloadParserFactory.h> #include <Swiften/Parser/PayloadParsers/PrivateStorageParserFactory.h> -#include <Swiften/Parser/PayloadParsers/DelayParserFactory.h> +#include <Swiften/Parser/PayloadParsers/DelayParser.h> #include <Swiften/Parser/PayloadParsers/MUCUserPayloadParserFactory.h> #include <Swiften/Parser/PayloadParsers/NicknameParserFactory.h> #include <Swiften/Parser/PayloadParsers/ReplaceParser.h> @@ -58,6 +58,7 @@ FullPayloadParserFactoryCollection::FullPayloadParserFactoryCollection() { factories_.push_back(shared_ptr<PayloadParserFactory>(new GenericPayloadParserFactory<SubjectParser>("subject"))); factories_.push_back(shared_ptr<PayloadParserFactory>(new GenericPayloadParserFactory<PriorityParser>("priority"))); factories_.push_back(shared_ptr<PayloadParserFactory>(new ErrorParserFactory(this))); + factories_.push_back(shared_ptr<PayloadParserFactory>(new GenericPayloadParserFactory<DelayParser>("delay", "urn:xmpp:delay"))); factories_.push_back(shared_ptr<PayloadParserFactory>(new GenericPayloadParserFactory<SoftwareVersionParser>("query", "jabber:iq:version"))); factories_.push_back(shared_ptr<PayloadParserFactory>(new GenericPayloadParserFactory<StorageParser>("storage", "storage:bookmarks"))); factories_.push_back(shared_ptr<PayloadParserFactory>(new GenericPayloadParserFactory<RosterItemExchangeParser>("x", "http://jabber.org/protocol/rosterx"))); @@ -79,7 +80,6 @@ FullPayloadParserFactoryCollection::FullPayloadParserFactoryCollection() { factories_.push_back(shared_ptr<PayloadParserFactory>(new VCardParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new PrivateStorageParserFactory(this))); factories_.push_back(shared_ptr<PayloadParserFactory>(new ChatStateParserFactory())); - factories_.push_back(shared_ptr<PayloadParserFactory>(new DelayParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new MUCUserPayloadParserFactory())); factories_.push_back(shared_ptr<PayloadParserFactory>(new NicknameParserFactory())); foreach(shared_ptr<PayloadParserFactory> factory, factories_) { |