version 0.3.0
[fms.git] / src / freenet / identityxml.cpp
1 #include "../../include/freenet/identityxml.h"\r
2 \r
3 #ifdef XMEM\r
4         #include <xmem.h>\r
5 #endif\r
6 \r
7 IdentityXML::IdentityXML()\r
8 {\r
9         Initialize();\r
10 }\r
11 \r
12 std::string IdentityXML::GetXML()\r
13 {\r
14         Poco::AutoPtr<Poco::XML::Document> doc=new Poco::XML::Document;\r
15         //TiXmlDocument td;\r
16         //TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");\r
17         Poco::XML::Element *root=doc->createElement("Identity");\r
18         //TiXmlElement *tid;\r
19         //TiXmlPrinter tp;\r
20 \r
21         doc->appendChild(root);\r
22         //td.LinkEndChild(tdec);\r
23         //tid=new TiXmlElement("Identity");\r
24         //td.LinkEndChild(tid);\r
25 \r
26         root->appendChild(XMLCreateCDATAElement(doc,"Name",m_name));\r
27         //tid->LinkEndChild(XMLCreateCDATAElement("Name",m_name));\r
28 \r
29         root->appendChild(XMLCreateBooleanElement(doc,"SingleUse",m_singleuse));\r
30         //tid->LinkEndChild(XMLCreateBooleanElement("SingleUse",m_singleuse));\r
31 \r
32         root->appendChild(XMLCreateBooleanElement(doc,"PublishTrustList",m_publishtrustlist));\r
33         //tid->LinkEndChild(XMLCreateBooleanElement("PublishTrustList",m_publishtrustlist));\r
34 \r
35         root->appendChild(XMLCreateBooleanElement(doc,"PublishBoardList",m_publishboardlist));\r
36         //tid->LinkEndChild(XMLCreateBooleanElement("PublishBoardList",m_publishboardlist));\r
37 \r
38         // freesite edition will be -1 if identity isn't publishing a freesite\r
39         if(m_freesiteedition>=0)\r
40         {\r
41                 root->appendChild(XMLCreateTextElement(doc,"FreesiteEdition",m_freesiteedition));\r
42                 //tid->LinkEndChild(XMLCreateTextElement("FreesiteEdition",m_freesiteedition));\r
43         }\r
44 \r
45         //td.Accept(&tp);\r
46         //return std::string(tp.CStr());\r
47 \r
48         return GenerateXML(doc);\r
49 }\r
50 \r
51 void IdentityXML::Initialize()\r
52 {\r
53         m_name="";\r
54         m_publishtrustlist=false;\r
55         m_publishboardlist=false;\r
56         m_singleuse=false;\r
57         m_freesiteedition=-1;\r
58 }\r
59 \r
60 const bool IdentityXML::ParseXML(const std::string &xml)\r
61 {\r
62 \r
63         bool parsed=false;\r
64         Poco::XML::DOMParser dp;\r
65 \r
66         Initialize();\r
67 \r
68         try\r
69         {\r
70                 Poco::AutoPtr<Poco::XML::Document> doc=dp.parseString(FixCDATA(xml));\r
71                 Poco::XML::Element *root=XMLGetFirstChild(doc,"Identity");\r
72                 Poco::XML::Element *txt=NULL;\r
73 \r
74                 txt=XMLGetFirstChild(root,"Name");\r
75                 if(txt)\r
76                 {\r
77                         if(txt->firstChild())\r
78                         {\r
79                                 m_name=txt->firstChild()->getNodeValue();\r
80                                 if(m_name.size()>40)\r
81                                 {\r
82                                         m_name.erase(40);\r
83                                 }\r
84                         }\r
85                 }\r
86                 \r
87                 m_singleuse=XMLGetBooleanElement(root,"SingleUse");\r
88                 m_publishtrustlist=XMLGetBooleanElement(root,"PublishTrustList");\r
89                 m_publishboardlist=XMLGetBooleanElement(root,"PublishBoardList");\r
90                 \r
91                 txt=XMLGetFirstChild(root,"FreesiteEdition");\r
92                 if(txt)\r
93                 {\r
94                         if(txt->firstChild())\r
95                         {\r
96                                 std::string editionstr=txt->firstChild()->getNodeValue();\r
97                                 StringFunctions::Convert(editionstr,m_freesiteedition);\r
98                         }\r
99                 }\r
100 \r
101                 parsed=true;\r
102 \r
103         }\r
104         catch(...)\r
105         {\r
106         }\r
107 \r
108         return parsed;\r
109 \r
110         /*\r
111         TiXmlDocument td;\r
112         td.Parse(xml.c_str());\r
113 \r
114         if(!td.Error())\r
115         {\r
116                 TiXmlText *txt;\r
117                 TiXmlHandle hnd(&td);\r
118 \r
119                 Initialize();\r
120 \r
121                 txt=hnd.FirstChild("Identity").FirstChild("Name").FirstChild().ToText();\r
122                 if(txt)\r
123                 {\r
124                         m_name=txt->ValueStr();\r
125                 }\r
126 \r
127                 if(m_name.size()>40)\r
128                 {\r
129                         m_name.erase(40);\r
130                 }\r
131 \r
132                 m_singleuse=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"SingleUse");\r
133 \r
134                 m_publishtrustlist=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"PublishTrustList");\r
135 \r
136                 m_publishboardlist=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"PublishBoardList");\r
137 \r
138                 txt=hnd.FirstChild("Identity").FirstChild("FreesiteEdition").FirstChild().ToText();\r
139                 if(txt)\r
140                 {\r
141                         std::string editionstr=SanitizeSingleString(txt->ValueStr());\r
142                         StringFunctions::Convert(editionstr,m_freesiteedition);\r
143                 }\r
144 \r
145                 return true;\r
146 \r
147         }\r
148         else\r
149         {\r
150                 return false;\r
151         }\r
152 */\r
153 }\r