version 0.2.10
[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         TiXmlDocument td;\r
15         TiXmlDeclaration *tdec=new TiXmlDeclaration("1.0","UTF-8","");\r
16         TiXmlElement *tid;\r
17         TiXmlPrinter tp;\r
18 \r
19         td.LinkEndChild(tdec);\r
20         tid=new TiXmlElement("Identity");\r
21         td.LinkEndChild(tid);\r
22 \r
23         tid->LinkEndChild(XMLCreateCDATAElement("Name",m_name));\r
24 \r
25         tid->LinkEndChild(XMLCreateBooleanElement("SingleUse",m_singleuse));\r
26 \r
27         tid->LinkEndChild(XMLCreateBooleanElement("PublishTrustList",m_publishtrustlist));\r
28 \r
29         tid->LinkEndChild(XMLCreateBooleanElement("PublishBoardList",m_publishboardlist));\r
30 \r
31         // freesite edition will be -1 if identity isn't publishing a freesite\r
32         if(m_freesiteedition>=0)\r
33         {\r
34                 tid->LinkEndChild(XMLCreateTextElement("FreesiteEdition",m_freesiteedition));\r
35         }\r
36 \r
37         td.Accept(&tp);\r
38         return std::string(tp.CStr());\r
39 \r
40 }\r
41 \r
42 void IdentityXML::Initialize()\r
43 {\r
44         m_name="";\r
45         m_publishtrustlist=false;\r
46         m_publishboardlist=false;\r
47         m_singleuse=false;\r
48         m_freesiteedition=-1;\r
49 }\r
50 \r
51 const bool IdentityXML::ParseXML(const std::string &xml)\r
52 {\r
53         TiXmlDocument td;\r
54         td.Parse(xml.c_str());\r
55 \r
56         if(!td.Error())\r
57         {\r
58                 TiXmlText *txt;\r
59                 TiXmlHandle hnd(&td);\r
60 \r
61                 Initialize();\r
62 \r
63                 txt=hnd.FirstChild("Identity").FirstChild("Name").FirstChild().ToText();\r
64                 if(txt)\r
65                 {\r
66                         m_name=txt->ValueStr();\r
67                 }\r
68 \r
69                 if(m_name.size()>40)\r
70                 {\r
71                         m_name.erase(40);\r
72                 }\r
73 \r
74                 m_singleuse=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"SingleUse");\r
75 \r
76                 m_publishtrustlist=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"PublishTrustList");\r
77 \r
78                 m_publishboardlist=XMLGetBooleanElement(hnd.FirstChild("Identity").ToElement(),"PublishBoardList");\r
79 \r
80                 txt=hnd.FirstChild("Identity").FirstChild("FreesiteEdition").FirstChild().ToText();\r
81                 if(txt)\r
82                 {\r
83                         std::string editionstr=txt->ValueStr();\r
84                         StringFunctions::Convert(editionstr,m_freesiteedition);\r
85                 }\r
86 \r
87                 return true;\r
88 \r
89         }\r
90         else\r
91         {\r
92                 return false;\r
93         }\r
94 \r
95 }\r