void AMGithubManager::onIssuesReturned(){ QJson::Parser parser; QVariant githubFullReply = parser.parse(getIssuesReply_->readAll()); //qdebug() << githubFullReply; bool doEmit = false; QVariantMap retVal; if(githubFullReply.canConvert(QVariant::List)){ QVariantList githubListReply = githubFullReply.toList(); if(githubListReply.at(0).canConvert(QVariant::Map)){ doEmit = true; retVal = githubListReply.at(0).toMap(); } } disconnect(getIssuesReply_, 0); getIssuesReply_->deleteLater(); getIssuesReply_ = 0; if(doEmit) emit issuesReturned(retVal); }
void LYGithubManager::onIssuesReturned(){ QList<QByteArray> headerList = getIssuesReply_->rawHeaderList(); for(int x = 0; x < headerList.count(); x++){ if(headerList.at(x) == "Link" && lastPageNumber_ == -1){ QString linkHeader = getIssuesReply_->rawHeader(headerList.at(x)); int lastPageNumber = -1; int nextPageNumber = -1; QStringList linkHeaderItems = linkHeader.split(','); for(int y = 0; y < linkHeaderItems.count(); y++){ if(linkHeaderItems.at(y).contains("; rel=\"last\"")) lastPageNumber = pageNumberFromURLString(linkHeaderItems.at(y)); if(linkHeaderItems.at(y).contains("; rel=\"next\"")) nextPageNumber = pageNumberFromURLString(linkHeaderItems.at(y)); } lastPageNumber_ = lastPageNumber; } } int currentPageNumber = -1; if(lastPageNumber_ != -1) currentPageNumber = pageNumberFromURLString(lastGetIssuesRequest_); QJson::Parser parser; QVariant githubFullReply = parser.parse(getIssuesReply_->readAll()); bool doEmit = false; QList<QVariantMap> localRetVal; QVariantMap oneIssue; if(githubFullReply.canConvert(QVariant::List)){ QVariantList githubListReply = githubFullReply.toList(); if(githubListReply.at(0).canConvert(QVariant::Map)){ if((lastPageNumber_ == -1) || (currentPageNumber == lastPageNumber_) ) doEmit = true; for(int x = 0; x < githubListReply.count(); x++){ oneIssue = githubListReply.at(x).toMap(); localRetVal.append(oneIssue); } } } fullIssuesReply_.append(localRetVal); disconnect(getIssuesReply_, 0); getIssuesReply_->deleteLater(); getIssuesReply_ = 0; if((lastPageNumber_ != -1) && (currentPageNumber != lastPageNumber_)){ QNetworkRequest request; QString currentPageNumberString = QString("&page=%1").arg(currentPageNumber); QString nextPageNumberString = QString("&page=%1").arg(currentPageNumber+1); lastGetIssuesRequest_.replace(currentPageNumberString, nextPageNumberString); request.setUrl(QUrl(lastGetIssuesRequest_)); QString userInfo = userName_+":"+password_; QByteArray userData = userInfo.toLocal8Bit().toBase64(); QString headerData = "Basic " + userData; request.setRawHeader("Authorization", headerData.toLocal8Bit()); LYGithubProductBacklogStatusLog::statusLog()->appendStatusMessage(QString("Processed page %1 of %2 for getIssues request").arg(currentPageNumber).arg(lastPageNumber_)); getIssuesReply_ = manager_->get(request); connect(getIssuesReply_, SIGNAL(readyRead()), this, SLOT(onIssuesReturned())); return; } if(doEmit){ LYGithubProductBacklogStatusLog::statusLog()->appendStatusMessage("Processed final getIssues request"); lastPageNumber_ = -1; emit issuesReturned(fullIssuesReply_); return; } LYGithubProductBacklogStatusLog::statusLog()->appendStatusMessage("Something went wrong in getIssues request"); }