X-Git-Url: https://git.pterodactylus.net/?p=fms.git;a=blobdiff_plain;f=src%2Ffreenet%2Fmessagexml.cpp;h=7105da1c28e085b176524705081b46d3a917b546;hp=70b660d22a380a9e48a05bd94bebcee41389684c;hb=76805933f794915a72b7f0a21b12af6654759f4f;hpb=047cea32f848d605c549ec123c12c1c400dd7ec1 diff --git a/src/freenet/messagexml.cpp b/src/freenet/messagexml.cpp index 70b660d..7105da1 100644 --- a/src/freenet/messagexml.cpp +++ b/src/freenet/messagexml.cpp @@ -12,87 +12,58 @@ MessageXML::MessageXML() std::string MessageXML::GetXML() { Poco::AutoPtr doc=new Poco::XML::Document; - //TiXmlDocument td; - //TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8",""); - Poco::XML::Element *root=doc->createElement("Message"); - //TiXmlElement *tid; - //TiXmlPrinter tp; + Poco::AutoPtr root=doc->createElement("Message"); doc->appendChild(root); - //td.LinkEndChild(tdec); - //tid=new TiXmlElement("Message"); - //td.LinkEndChild(tid); root->appendChild(XMLCreateTextElement(doc,"Date",m_date)); root->appendChild(XMLCreateTextElement(doc,"Time",m_time)); root->appendChild(XMLCreateCDATAElement(doc,"Subject",m_subject)); root->appendChild(XMLCreateCDATAElement(doc,"MessageID",m_messageid)); root->appendChild(XMLCreateCDATAElement(doc,"ReplyBoard",m_replyboard)); - /* - tid->LinkEndChild(XMLCreateTextElement("Date",m_date)); - tid->LinkEndChild(XMLCreateTextElement("Time",m_time)); - tid->LinkEndChild(XMLCreateCDATAElement("Subject",m_subject)); - tid->LinkEndChild(XMLCreateCDATAElement("MessageID",m_messageid)); - tid->LinkEndChild(XMLCreateCDATAElement("ReplyBoard",m_replyboard)); - */ root->appendChild(XMLCreateCDATAElement(doc,"Body",m_body)); - // a little hack because TinyXML doesn't handle ]]> inside a CDATA section - manually separate into multiple CDATA sections - // TinyXML still won't be able to parse past the 1st CDATA section, but other implementations might - //tid->LinkEndChild(XMLCreateCDATAElement("Body",StringFunctions::Replace(m_body,"]]>","]]]]>"))); - Poco::XML::Element *brds=doc->createElement("Boards"); - //TiXmlElement *brds=new TiXmlElement("Boards"); + Poco::AutoPtr brds=doc->createElement("Boards"); + root->appendChild(brds); - //tid->LinkEndChild(brds); + + // attach boards for(std::vector::iterator i=m_boards.begin(); i!=m_boards.end(); i++) { std::string boardname=(*i); StringFunctions::Convert(boardname,boardname); brds->appendChild(XMLCreateCDATAElement(doc,"Board",boardname)); - //brds->LinkEndChild(XMLCreateCDATAElement("Board",boardname)); } + // attach inreplyto ids if(m_inreplyto.size()>0) { - Poco::XML::Element *rply=doc->createElement("InReplyTo"); - //TiXmlElement *rply=new TiXmlElement("InReplyTo"); + Poco::AutoPtr rply=doc->createElement("InReplyTo"); root->appendChild(rply); - //tid->LinkEndChild(rply); for(std::map::iterator j=m_inreplyto.begin(); j!=m_inreplyto.end(); j++) { - Poco::XML::Element *mess=doc->createElement("Message"); - //TiXmlElement *mess=new TiXmlElement("Message"); + Poco::AutoPtr mess=doc->createElement("Message"); rply->appendChild(mess); mess->appendChild(XMLCreateTextElement(doc,"Order",(*j).first)); mess->appendChild(XMLCreateCDATAElement(doc,"MessageID",(*j).second)); - //mess->LinkEndChild(XMLCreateTextElement("Order",(*j).first)); - //mess->LinkEndChild(XMLCreateCDATAElement("MessageID",(*j).second)); } } // add attachemnt node if we have attachments if(m_fileattachments.size()>0) { - Poco::XML::Element *attachments=doc->createElement("Attachments"); - //TiXmlElement *attachments=new TiXmlElement("Attachments"); + Poco::AutoPtr attachments=doc->createElement("Attachments"); root->appendChild(attachments); - //tid->LinkEndChild(attachments); for(std::vector::iterator j=m_fileattachments.begin(); j!=m_fileattachments.end(); j++) { - Poco::XML::Element *f=doc->createElement("File"); - //TiXmlElement *f=new TiXmlElement("File"); + Poco::AutoPtr f=doc->createElement("File"); attachments->appendChild(f); - //attachments->LinkEndChild(f); f->appendChild(XMLCreateCDATAElement(doc,"Key",(*j).m_key)); f->appendChild(XMLCreateTextElement(doc,"Size",(*j).m_size)); - //f->LinkEndChild(XMLCreateCDATAElement("Key",(*j).m_key)); - //f->LinkEndChild(XMLCreateTextElement("Size",(*j).m_size)); } } - //td.Accept(&tp); - //return std::string(tp.CStr()); return GenerateXML(doc); } @@ -252,133 +223,4 @@ const bool MessageXML::ParseXML(const std::string &xml) } return parsed; - -/* - TiXmlDocument td; - td.Parse(xml.c_str()); - - if(!td.Error()) - { - TiXmlHandle hnd(&td); - TiXmlNode *node2; - TiXmlText *txt; - - Initialize(); - - txt=hnd.FirstChild("Message").FirstChild("Date").FirstChild().ToText(); - if(txt) - { - m_date=SanitizeSingleString(txt->ValueStr()); - } - txt=hnd.FirstChild("Message").FirstChild("Time").FirstChild().ToText(); - if(txt) - { - m_time=SanitizeSingleString(txt->ValueStr()); - } - txt=hnd.FirstChild("Message").FirstChild("Subject").FirstChild().ToText(); - if(txt) - { - m_subject=SanitizeSingleString(txt->ValueStr()); - } - txt=hnd.FirstChild("Message").FirstChild("MessageID").FirstChild().ToText(); - if(txt) - { - m_messageid=SanitizeSingleString(txt->ValueStr()); - } - txt=hnd.FirstChild("Message").FirstChild("ReplyBoard").FirstChild().ToText(); - if(txt) - { - m_replyboard=SanitizeSingleString(txt->ValueStr()); - StringFunctions::LowerCase(m_replyboard,m_replyboard); - if(m_replyboard.size()>40) - { - m_replyboard.erase(40); - } - } - txt=hnd.FirstChild("Message").FirstChild("Body").FirstChild().ToText(); - if(txt) - { - m_body=txt->ValueStr(); - } - - node2=hnd.FirstChild("Message").FirstChild("Boards").FirstChild("Board").ToNode(); - while(node2) - { - if(node2->FirstChild()) - { - std::string boardname=SanitizeSingleString(node2->FirstChild()->ValueStr()); - StringFunctions::LowerCase(boardname,boardname); - if(boardname.size()>40) - { - boardname.erase(40); - } - m_boards.push_back(boardname); - } - node2=node2->NextSibling("Board"); - } - - node2=hnd.FirstChild("Message").FirstChild("InReplyTo").FirstChild("Message").ToNode(); - while(node2) - { - std::string orderstr; - long order=-1; - std::string messageid=""; - TiXmlHandle hnd2(node2); - txt=hnd2.FirstChild("Order").FirstChild().ToText(); - if(txt) - { - orderstr=SanitizeSingleString(txt->ValueStr()); - StringFunctions::Convert(orderstr,order); - } - txt=hnd2.FirstChild("MessageID").FirstChild().ToText(); - if(txt) - { - messageid=SanitizeSingleString(txt->ValueStr()); - } - - if(order!=-1 && messageid!="") - { - m_inreplyto[order]=messageid; - } - - node2=node2->NextSibling("Message"); - } - - node2=hnd.FirstChild("Message").FirstChild("Attachments").FirstChild("File").ToNode(); - while(node2) - { - std::string key=""; - std::string sizestr="-1"; - int size=-1; - - TiXmlHandle hnd2(node2); - - txt=hnd2.FirstChild("Key").FirstChild().ToText(); - if(txt) - { - key=SanitizeSingleString(txt->ValueStr()); - } - - txt=hnd2.FirstChild("Size").FirstChild().ToText(); - if(txt) - { - sizestr=SanitizeSingleString(txt->ValueStr()); - StringFunctions::Convert(sizestr,size); - } - - if(key!="" && size>0) - { - m_fileattachments.push_back(fileattachment(key,size)); - } - - node2=node2->NextSibling("File"); - } - - return true; - } - else - { - return false; - } - */ }