// virtual bool LLGoogleTranslationHandler::parseResponse( int& status, const std::string& body, std::string& translation, std::string& detected_lang, std::string& err_msg) const { Json::Value root; Json::Reader reader; if (!reader.parse(body, root)) { err_msg = reader.getFormatedErrorMessages(); return false; } if (!root.isObject()) // empty response? should not happen { return false; } if (status != STATUS_OK) { // Request failed. Extract error message from the response. parseErrorResponse(root, status, err_msg); return false; } // Request succeeded, extract translation from the response. return parseTranslation(root, translation, detected_lang); }
void FbTalker::parseResponseLogout(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("expireSession"); if (!doc.setContent(data)) return; kDebug() << "Parse ExpireSession response:" << endl << data; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "auth_expireSession_response ") { errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } kDebug() << "Error Code : " << errCode; // consider we are logged out in any case m_accessToken.clear(); m_sessionExpires = 0; m_user.clear(); emit signalBusy(false); }
void FbTalker::parseResponseAddPhoto(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("addphoto"); if (!doc.setContent(data)) return; kDebug() << "Parse Add Photo response:" << endl << data; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "photos_upload_response") { for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; } errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } emit signalBusy(false); emit signalAddPhotoDone(errCode, errorToText(errCode, errMsg)); }
void FbTalker::parseResponseGetUploadPermission(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("getUploadPerm"); if (!doc.setContent(data)) return; if (m_loginInProgress) emit signalLoginProgress(9); kDebug() << "Parse HasAppPermission response:" << endl << data; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "users_hasAppPermission_response") { m_user.uploadPerm = docElem.text().toInt(); errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } if (m_loginInProgress) { authenticationDone(errCode, errorToText(errCode, errMsg)); } else { emit signalBusy(false); emit signalChangePermDone(errCode, errorToText(errCode, errMsg)); } }
void ImageshackTalker::parseUploadPhotoDone(QByteArray data) { int errCode = -1; QString errMsg = ""; QDomDocument doc("addPhoto"); if (!doc.setContent(data)) return; QDomElement elem = doc.documentElement(); kDebug() << "-------------" << elem.tagName() << "------------"; kDebug() << data; if (elem.tagName() == "imginfo") { errCode = 0; } else { kDebug() << elem.tagName(); QDomNode node = elem.firstChild(); if (node.nodeName() == "error") { errCode = parseErrorResponse(elem, errMsg); } } emit signalBusy(false); emit signalAddPhotoDone(errCode, errMsg); }
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 FbTalker::parseResponseListFriends(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("getFriends"); if (!doc.setContent(data)) return; kDebug() << "Parse Friends response:" << endl << data; QDomElement docElem = doc.documentElement(); QString friendsUIDs; if (docElem.tagName() == "friends_get_response") { for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; if (node.nodeName() == "uid") { if (!friendsUIDs.isEmpty()) friendsUIDs.append(','); friendsUIDs.append(node.toElement().text()); } } errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } if (friendsUIDs.isEmpty()) { emit signalBusy(false); QList<FbUser> noFriends; emit signalListFriendsDone(errCode, errorToText(errCode, errMsg), noFriends); } else { // get user info for those users getUserInfo(friendsUIDs); } }
void FbTalker::parseResponseCreateAlbum(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("createalbum"); if (!doc.setContent(data)) return; kDebug() << "Parse Create Album response:" << endl << data; QString newAlbumID; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "photos_createAlbum_response") { for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; if (node.nodeName() == "aid") { newAlbumID = node.toElement().text(); kDebug() << "newAID: " << newAlbumID; } } errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } emit signalBusy(false); emit signalCreateAlbumDone(errCode, errorToText(errCode, errMsg), newAlbumID); }
void FbTalker::parseResponseGetLoggedInUser(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("getLoggedInUser"); if (!doc.setContent(data)) return; emit signalLoginProgress(4); kDebug() << "Parse GetLoggedInUser response:" << endl << data; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "users_getLoggedInUser_response") { m_user.id = docElem.text().toLongLong(); errCode = 0; } else if (docElem.tagName() == "error_response") errCode = parseErrorResponse(docElem, errMsg); if (errCode == 0) { // session is still valid -> get full user info getUserInfo(); } else { // it seems that session expired -> create new token and session m_accessToken.clear(); m_sessionExpires = 0; m_user.clear(); doOAuth(); } }
void FbTalker::parseResponseListAlbums(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("getAlbums"); if (!doc.setContent(data)) return; kDebug() << "Parse Albums response:" << endl << data; QDomElement docElem = doc.documentElement(); QList <FbAlbum> albumsList; if (docElem.tagName() == "photos_getAlbums_response") { for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; if (node.nodeName() == "album") { FbAlbum album; for (QDomNode nodeA = node.toElement().firstChild(); !nodeA.isNull(); nodeA = nodeA.nextSibling()) { if (!nodeA.isElement()) continue; if (nodeA.nodeName() == "aid") album.id = nodeA.toElement().text().trimmed(); else if (nodeA.nodeName() == "name") album.title = nodeA.toElement().text(); else if (nodeA.nodeName() == "description") album.description = nodeA.toElement().text(); else if (nodeA.nodeName() == "location") album.location = nodeA.toElement().text(); else if (nodeA.nodeName() == "link") album.url = nodeA.toElement().text(); else if (nodeA.nodeName() == "visible") { if (nodeA.toElement().text() == "friends") album.privacy = FB_FRIENDS; else if (nodeA.toElement().text() == "friends-of-friends") album.privacy = FB_FRIENDS_OF_FRIENDS; else if (nodeA.toElement().text() == "networks") album.privacy = FB_NETWORKS; else if (nodeA.toElement().text() == "everyone") album.privacy = FB_EVERYONE; } } kDebug() << "AID: " << album.id; albumsList.append(album); } } errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } qSort(albumsList.begin(), albumsList.end()); emit signalBusy(false); emit signalListAlbumsDone(errCode, errorToText(errCode, errMsg), albumsList); }
void FbTalker::parseResponseGetUserInfo(const QByteArray& data) { int errCode = -1; QString errMsg; QDomDocument doc("getUserInfo"); if (!doc.setContent(data)) return; if (m_state == FB_GETUSERINFO) // during login emit signalLoginProgress(7); kDebug() << "Parse GetUserInfo response:" << endl << data; QList<FbUser> friendsList; QDomElement docElem = doc.documentElement(); if (docElem.tagName() == "users_getInfo_response") { for (QDomNode node = docElem.firstChild(); !node.isNull(); node = node.nextSibling()) { if (!node.isElement()) continue; if (node.nodeName() == "user") { FbUser user; for (QDomNode nodeU = node.toElement().firstChild(); !nodeU.isNull(); nodeU = nodeU.nextSibling()) { if (!nodeU.isElement()) continue; if (nodeU.nodeName() == "uid") user.id = nodeU.toElement().text().toLongLong(); else if (nodeU.nodeName() == "name") user.name = nodeU.toElement().text(); else if (nodeU.nodeName() == "profile_url") user.profileURL = nodeU.toElement().text(); } if (m_state == FB_GETUSERINFO) { m_user.name = user.name; m_user.profileURL = user.profileURL; } else if (!user.name.isEmpty()) friendsList.append(user); } } errCode = 0; } else if (docElem.tagName() == "error_response") { errCode = parseErrorResponse(docElem, errMsg); } if (m_state == FB_GETUSERINFO) { if (errCode != 0) { authenticationDone(errCode, errorToText(errCode, errMsg)); return; } getUploadPermission(); } else { qSort(friendsList.begin(), friendsList.end()); emit signalBusy(false); emit signalListFriendsDone(errCode, errorToText(errCode, errMsg), friendsList); } }
void ImageshackTalker::parseUploadPhotoDone(QByteArray data) { int errCode = -1; QString errMsg = ""; QDomDocument doc("addPhoto"); if (!doc.setContent(data)) return; QDomElement elem = doc.documentElement(); if (!elem.isNull() && elem.tagName() == "imginfo") { errCode = 0; } else { kDebug() << elem.tagName(); QDomNode node = elem.firstChild(); if (node.nodeName() == "error") { errCode = parseErrorResponse(elem, errMsg); } } if (m_state == IMGHCK_ADDPHOTO || m_state == IMGHCK_ADDVIDEO || (m_state == IMGHCK_ADDPHOTOGALLERY && errCode)) { emit signalBusy(false); emit signalAddPhotoDone(errCode, errMsg); } else if (m_state == IMGHCK_ADDPHOTOGALLERY) { QDomElement chld = elem.firstChildElement("files"); if (chld.isNull()) { emit signalBusy(false); emit signalAddPhotoDone(-2, "Error parsing server response. No information about uploaded item"); } else { QString server = chld.attribute("server"); QString bucket = chld.attribute("bucket"); QDomElement image = chld.firstChildElement("image"); if (image.isNull() || server.isEmpty() || bucket.isEmpty() || !image.hasChildNodes()) { emit signalBusy(false); emit signalAddPhotoDone(-3, "Error parsing server response. No image, server or bucket returned"); } else { QString imgPath = QString("img") + server + "/" + bucket + "/" + image.firstChild().toText().data(); KUrl url(m_job->property("k_galleryName").toString()); url.addQueryItem("action", "add"); url.addQueryItem("image[]", imgPath); url.addQueryItem("cookie", m_imageshack->registrationCode()); kDebug() << url.url(); m_job->kill(); KIO::Job *job = KIO::get(url, KIO::NoReload, KIO::HideProgressInfo); m_job = job; m_job->setProperty("k_step", STEP_ADDITEMTOGALLERY); m_buffer.resize(0); connect(job, SIGNAL(data(KIO::Job*,QByteArray)), this, SLOT(data(KIO::Job*,QByteArray))); connect(job, SIGNAL(result(KJob*)), this, SLOT(slotResult(KJob*))); } } }