diff --git a/backends/twitter/TwitterResponseParser.cpp b/backends/twitter/TwitterResponseParser.cpp index cc334d37a1b3e707d607278d85c2b9c8e8853188..4ccc5e8507763bb88578dd6ba32a09fff7898d99 100644 --- a/backends/twitter/TwitterResponseParser.cpp +++ b/backends/twitter/TwitterResponseParser.cpp @@ -212,19 +212,30 @@ std::vector getIDs(std::string &xml) return IDs; } -std::string getErrorMessage(std::string &xml) +Error getErrorMessage(std::string &xml) { - std::string error; + std::string error = ""; + std::string code = ""; + Error resp; + Swift::ParserElement::ref rootElement = Swift::StringTreeParser::parse(xml); if(rootElement == NULL) { LOG4CXX_ERROR(logger, "Error while parsing XML"); - return ""; + return resp; } const std::string xmlns = rootElement->getNamespace(); const Swift::ParserElement::ref errorElement = rootElement->getChild(TwitterReponseTypes::error, xmlns); + Swift::AttributeMap attributes = errorElement->getAttributes(); - if(errorElement != NULL) error = errorElement->getText(); - return error; + if(errorElement != NULL) { + error = errorElement->getText(); + code = (errorElement->getAttributes()).getAttribute("code"); + } + + resp.setCode(code); + resp.setMessage(error); + + return resp; }