diff --git a/backends/twitter/TwitterResponseParser.cpp b/backends/twitter/TwitterResponseParser.cpp index f8c83746a30db40bb13793f0d9758c14ca67deee..33e2f27ca208db2b53ec289b0fc7bebf487e26e2 100644 --- a/backends/twitter/TwitterResponseParser.cpp +++ b/backends/twitter/TwitterResponseParser.cpp @@ -1,8 +1,16 @@ #include "TwitterResponseParser.h" #include "transport/logging.h" +#include DEFINE_LOGGER(logger, "TwitterResponseParser") +static std::string tolowercase(std::string inp) +{ + std::string out = inp; + for(int i=0 ; igetChild(TwitterReponseTypes::id, xmlns)->getText() ) ); - user.setScreenName( std::string( element->getChild(TwitterReponseTypes::screen_name, xmlns)->getText() ) ); + user.setScreenName( tolowercase( std::string( element->getChild(TwitterReponseTypes::screen_name, xmlns)->getText() ) ) ); user.setUserName( std::string( element->getChild(TwitterReponseTypes::name, xmlns)->getText() ) ); + user.setProfileImgURL( std::string( element->getChild(TwitterReponseTypes::profile_image_url, xmlns)->getText() ) ); user.setNumberOfTweets( atoi(element->getChild(TwitterReponseTypes::statuses_count, xmlns)->getText().c_str()) ); return user; } @@ -137,6 +146,25 @@ std::vector getUsers(std::string &xml) return users; } +User getUser(std::string &xml) +{ + User user; + Swift::ParserElement::ref rootElement = Swift::StringTreeParser::parse(xml); + + if(rootElement == NULL) { + LOG4CXX_ERROR(logger, "Error while parsing XML") + return user; + } + + if(rootElement->getName() != TwitterReponseTypes::user) { + LOG4CXX_ERROR(logger, "XML doesn't correspond to user object") + return user; + } + + const std::string xmlns = rootElement->getNamespace(); + return user = getUser(rootElement, xmlns); +} + std::vector getIDs(std::string &xml) { std::vector IDs;