File indexing completed on 2024-05-12 04:46:02
0001 #include "XMLHelper.hpp" 0002 0003 #include <QDebug> 0004 #include <QtXml/QDomDocument> 0005 0006 QList<WebDAVItem> XMLHelper::parseListDirResponse(WebDAV *webdavClient, 0007 QByteArray xml) { 0008 QList<WebDAVItem> items; 0009 QString webdavNS = "DAV:"; 0010 QDomDocument doc; 0011 doc.setContent(xml, true); 0012 0013 QDomNodeList responses = doc.elementsByTagNameNS(webdavNS, "response"); 0014 0015 for (int i = 0; i < responses.length(); i++) { 0016 QDomElement response = responses.at(i).toElement(); 0017 0018 QString href = 0019 response.elementsByTagNameNS(webdavNS, "href").at(0).toElement().text(); 0020 QString creationDate = 0021 response.elementsByTagNameNS(webdavNS, "creationdate") 0022 .at(0) 0023 .toElement() 0024 .text(); 0025 QString lastModified = 0026 response.elementsByTagNameNS(webdavNS, "getlastmodified") 0027 .at(0) 0028 .toElement() 0029 .text(); 0030 QString displayName = response.elementsByTagNameNS(webdavNS, "displayname") 0031 .at(0) 0032 .toElement() 0033 .text(); 0034 QString contentType = 0035 response.elementsByTagNameNS(webdavNS, "getcontenttype") 0036 .at(0) 0037 .toElement() 0038 .text(); 0039 QString contentLength = 0040 response.elementsByTagNameNS(webdavNS, "getcontentlength") 0041 .at(0) 0042 .toElement() 0043 .text(); 0044 bool isCollection; 0045 0046 if (response.elementsByTagNameNS(webdavNS, "resourcetype") 0047 .at(0) 0048 .toElement() 0049 .elementsByTagNameNS(webdavNS, "collection") 0050 .size() == 1) { 0051 isCollection = true; 0052 } else { 0053 isCollection = false; 0054 } 0055 0056 items.append(WebDAVItem(webdavClient, href, creationDate, lastModified, 0057 displayName, contentType, contentLength, 0058 isCollection)); 0059 } 0060 0061 return items; 0062 } 0063 0064 QList<CardDAVResponseItem *> XMLHelper::parseCardDAVMultiStatusResponse( 0065 QString responseXml) { 0066 QString webdavNS = "DAV:"; 0067 QString cardDavNS = "urn:ietf:params:xml:ns:carddav"; 0068 QList<CardDAVResponseItem *> responseTagList; 0069 0070 QDomDocument doc; 0071 doc.setContent(responseXml, true); 0072 0073 QDomNodeList responses = doc.elementsByTagNameNS(webdavNS, "response"); 0074 0075 for (int i = 0; i < responses.length(); i++) { 0076 CardDAVResponseItem *item = new CardDAVResponseItem(); 0077 QDomElement response = responses.at(i).toElement(); 0078 QString href = 0079 response.elementsByTagNameNS(webdavNS, "href").at(0).toElement().text(); 0080 0081 item->setHref(QUrl(href)); 0082 0083 if (response.elementsByTagNameNS(webdavNS, "resourcetype") 0084 .at(0) 0085 .toElement() 0086 .elementsByTagNameNS(webdavNS, "collection") 0087 .size() == 1) { 0088 item->setIsCollection(true); 0089 } else { 0090 item->setIsCollection(false); 0091 } 0092 0093 if (response.elementsByTagNameNS(webdavNS, "resourcetype") 0094 .at(0) 0095 .toElement() 0096 .elementsByTagNameNS(cardDavNS, "addressbook") 0097 .size() == 1) { 0098 item->setIsAddressBook(true); 0099 } else { 0100 item->setIsAddressBook(false); 0101 } 0102 0103 if (response.elementsByTagNameNS(cardDavNS, "address-data").size() == 1) { 0104 QString vCard, eTag; 0105 0106 item->setIsContact(true); 0107 0108 vCard = response.elementsByTagNameNS(cardDavNS, "address-data") 0109 .at(0) 0110 .toElement() 0111 .text(); 0112 eTag = response.elementsByTagNameNS(webdavNS, "getetag") 0113 .at(0) 0114 .toElement() 0115 .text(); 0116 0117 item->setContact(new Contact(vCard, eTag, QUrl(href))); 0118 } else { 0119 item->setIsContact(false); 0120 } 0121 0122 responseTagList.push_front(item); 0123 } 0124 0125 return responseTagList; 0126 }