void FbTalker::parseResponseListPhotos(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("getPhotos"); if (!doc.setContent(data)) return; kDebug() << "Parse Photos response:" << endl << data; QDomElement docElem = doc.documentElement(); QList <FbPhoto> photosList; if (docElem.tagName() == "photos_get_response") { for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; if (node.nodeName() == "photo") { FbPhoto photo; for (QDomNode nodeP = node.toElement().firstChild(); !nodeP.isNull(); nodeP = nodeP.nextSibling()) { if (!nodeP.isElement()) continue; if (nodeP.nodeName() == "pid") photo.id = nodeP.toElement().text().trimmed(); else if (nodeP.nodeName() == "caption") photo.caption = nodeP.toElement().text(); else if (nodeP.nodeName() == "src_small") photo.thumbURL = nodeP.toElement().text(); else if (nodeP.nodeName() == "src_big") photo.originalURL = nodeP.toElement().text(); else if (nodeP.nodeName() == "src" && photo.originalURL.isEmpty()) photo.originalURL = nodeP.toElement().text(); } photosList.append(photo); } } errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } emit signalBusy(false); emit signalListPhotosDone(errCode, errorToText(errCode, errMsg), photosList); }
void SmugTalker::parseResponseListPhotos(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc(QString::fromLatin1("images.get")); if (!doc.setContent(data)) return; qCDebug(KIPIPLUGINS_LOG) << "Parse Photos response:" << endl << data; QList <SmugPhoto> photosList; QDomElement e = doc.documentElement(); for (QDomNode node = e.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; e = node.toElement(); if (e.tagName() == QString::fromLatin1("Album")) { node = e.firstChild(); if (!node.isElement()) continue; e = node.toElement(); } if (e.tagName() == QString::fromLatin1("Images")) { for (QDomNode nodeP = e.firstChild(); !nodeP.isNull(); nodeP = nodeP.nextSibling()) { if (!nodeP.isElement()) continue; e = nodeP.toElement(); if (e.tagName() == QString::fromLatin1("Image")) { SmugPhoto photo; photo.id = e.attribute(QString::fromLatin1("id")).toLongLong(); photo.key = e.attribute(QString::fromLatin1("Key")); photo.caption = htmlToText(e.attribute(QString::fromLatin1("Caption"))); photo.keywords = htmlToText(e.attribute(QString::fromLatin1("Keywords"))); photo.thumbURL = e.attribute(QString::fromLatin1("ThumbURL")); // try to get largest size available if (e.hasAttribute(QString::fromLatin1("Video1280URL"))) photo.originalURL = e.attribute(QString::fromLatin1("Video1280URL")); else if (e.hasAttribute(QString::fromLatin1("Video960URL"))) photo.originalURL = e.attribute(QString::fromLatin1("Video960URL")); else if (e.hasAttribute(QString::fromLatin1("Video640URL"))) photo.originalURL = e.attribute(QString::fromLatin1("Video640URL")); else if (e.hasAttribute(QString::fromLatin1("Video320URL"))) photo.originalURL = e.attribute(QString::fromLatin1("Video320URL")); else if (e.hasAttribute(QString::fromLatin1("OriginalURL"))) photo.originalURL = e.attribute(QString::fromLatin1("OriginalURL")); else if (e.hasAttribute(QString::fromLatin1("X3LargeURL"))) photo.originalURL = e.attribute(QString::fromLatin1("X3LargeURL")); else if (e.hasAttribute(QString::fromLatin1("X2LargeURL"))) photo.originalURL = e.attribute(QString::fromLatin1("X2LargeURL")); else if (e.hasAttribute(QString::fromLatin1("XLargeURL"))) photo.originalURL = e.attribute(QString::fromLatin1("XLargeURL")); else if (e.hasAttribute(QString::fromLatin1("LargeURL"))) photo.originalURL = e.attribute(QString::fromLatin1("LargeURL")); else if (e.hasAttribute(QString::fromLatin1("MediumURL"))) photo.originalURL = e.attribute(QString::fromLatin1("MediumURL")); else if (e.hasAttribute(QString::fromLatin1("SmallURL"))) photo.originalURL = e.attribute(QString::fromLatin1("SmallURL")); photosList.append(photo); } } errCode = 0; } else if (e.tagName() == QString::fromLatin1("err")) { errCode = e.attribute(QString::fromLatin1("code")).toInt(); errMsg = e.attribute(QString::fromLatin1("msg")); qCDebug(KIPIPLUGINS_LOG) << "Error:" << errCode << errMsg; } } if (errCode == 15) // 15: empty list errCode = 0; emit signalBusy(false); emit signalListPhotosDone(errCode, errorToText(errCode, errMsg), photosList); }