bool AWebservice::postChange (const AMessage2SendList& list_messages, const ARating2SendList& list_rating, const AModerate2SendList& list_moderate, ACommitInfo& commit_info) { QString data; data += "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"; data += "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n"; data += " <soap:Body>\r\n"; data += " <PostChange xmlns=\"http://rsdn.ru/Janus/\">\r\n"; data += " <postRequest>\r\n"; data += (QString)" <userName>" + m_rsdn_login + "</userName>\r\n"; data += (QString)" <password>" + m_rsdn_password + "</password>\r\n"; // сообщения if (list_messages.count() > 0) { data += " <writedMessages>\r\n"; for (int i = 0; i < list_messages.count(); i++) { QString message = list_messages[i].Message; QString subject = list_messages[i].Subject; subject.replace("&", "&"); subject.replace("<", "<"); subject.replace(">", ">"); data += " <PostMessageInfo>\r\n"; data += (QString)" <localMessageId>" + QString::number(list_messages[i].ID) + "</localMessageId>\r\n"; data += (QString)" <parentId>" + QString::number(list_messages[i].IDParent) + "</parentId>\r\n"; data += (QString)" <forumId>" + QString::number(list_messages[i].IDForum) + "</forumId>\r\n"; data += (QString)" <subject>" + subject + "</subject>\r\n"; data += (QString)" <message>" + message + "</message>\r\n"; data += " </PostMessageInfo>\r\n"; } data += " </writedMessages>\r\n"; } else data += " <writedMessages />\r\n"; // рейтинги if (list_rating.count() > 0) { data += " <rates>\r\n"; for (int i = 0; i < list_rating.count(); i++) { data += " <PostRatingInfo>\r\n"; data += (QString)" <localRatingId>" + QString::number(list_rating[i].ID) + "</localRatingId>\r\n"; data += (QString)" <messageId>" + QString::number(list_rating[i].IDMessage) + "</messageId>\r\n"; data += (QString)" <rate>" + QString::number(list_rating[i].Rate) + "</rate>\r\n"; data += " </PostRatingInfo>\r\n"; } data += " </rates>\r\n"; } else data += " <rates />\r\n"; // модерилки if (list_moderate.count() > 0) { data += " <moderates>\r\n"; for (int i = 0; i < list_moderate.count(); i++) { QString description = list_moderate[i].Description; description.replace("&", "&"); description.replace("<", "<"); description.replace(">", ">"); data += " <PostModerateInfo>\r\n"; data += (QString)" <LocalModerateId>" + QString::number(list_moderate[i].ID) + "</LocalModerateId>\r\n"; data += (QString)" <MessageId>" + QString::number(list_moderate[i].IDMessage) + "</MessageId>\r\n"; data += (QString)" <ModerateAction>" + list_moderate[i].Action + "</ModerateAction>\r\n"; data += (QString)" <ModerateToForumId>" + QString::number(list_moderate[i].IDForum) + "</ModerateToForumId>\r\n"; data += (QString)" <Description>" + description + "</Description>\r\n"; data += (QString)" <AsModerator>" + QString::number(list_moderate[i].AsModerator) + "</AsModerator>\r\n"; data += " </PostModerateInfo>\r\n"; } data += " </moderates>\r\n"; } else data += " <moderates />\r\n"; data += " </postRequest>\r\n"; data += " </PostChange>\r\n"; data += " </soap:Body>\r\n"; data += "</soap:Envelope>\r\n"; QNetworkRequest request; prepareRequest(request, m_rsdn_proto, "PostChange", data.toUtf8().size()); if (makeRequest(request, data) == false) return false; QString cookie; QString result = parsePostChange(m_headers, cookie); if (result.length() > 0) { m_error = result; return false; } data = ""; data += "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"; data += "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n"; data += " <soap:Body>\r\n"; data += " <PostChangeCommit xmlns=\"http://rsdn.ru/Janus/\" />\r\n"; data += " </soap:Body>\r\n"; data += "</soap:Envelope>\r\n"; prepareRequest(request, m_rsdn_proto, "PostChangeCommit", data.toUtf8().size()); if (cookie.length() > 0) request.setRawHeader("Cookie", cookie.toUtf8()); if (makeRequest(request, data) == false) return false; result = parsePostChangeCommit(m_body, commit_info); if (result.length() > 0) { m_error = result; return false; } return true; }
void AWebservice::postChange_WebserviceQuery (QString& header, QString& data, const AMessage2SendList& list_messages, const ARating2SendList& list_rating, const AModerate2SendList& list_moderate, IProgress* progress) { if (progress != NULL) progress->onProgress(0); QSettings settings; QString rsdn_login = settings.value("rsdn/login", "").toString(); QString rsdn_password = settings.value("rsdn/password", "").toString(); data = ""; data += "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"; data += "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n"; data += " <soap:Body>\r\n"; data += " <PostChange xmlns=\"http://rsdn.ru/Janus/\">\r\n"; data += " <postRequest>\r\n"; data += (QString)" <userName>" + rsdn_login + "</userName>\r\n"; data += (QString)" <password>" + rsdn_password + "</password>\r\n"; // сообщения if (list_messages.count() > 0) { data += " <writedMessages>\r\n"; for (int i = 0; i < list_messages.count(); i++) { QString message = list_messages[i].Message; QString subject = list_messages[i].Subject; subject.replace("&", "&"); subject.replace("<", "<"); subject.replace(">", ">"); data += " <PostMessageInfo>\r\n"; data += (QString)" <localMessageId>" + QString::number(list_messages[i].ID) + "</localMessageId>\r\n"; data += (QString)" <parentId>" + QString::number(list_messages[i].IDParent) + "</parentId>\r\n"; data += (QString)" <forumId>" + QString::number(list_messages[i].IDForum) + "</forumId>\r\n"; data += (QString)" <subject>" + subject + "</subject>\r\n"; data += (QString)" <message>" + message + "</message>\r\n"; data += " </PostMessageInfo>\r\n"; } data += " </writedMessages>\r\n"; } else data += " <writedMessages />\r\n"; // рейтинги if (list_rating.count() > 0) { data += " <rates>\r\n"; for (int i = 0; i < list_rating.count(); i++) { data += " <PostRatingInfo>\r\n"; data += (QString)" <localRatingId>" + QString::number(list_rating[i].ID) + "</localRatingId>\r\n"; data += (QString)" <messageId>" + QString::number(list_rating[i].IDMessage) + "</messageId>\r\n"; data += (QString)" <rate>" + QString::number(list_rating[i].Rate) + "</rate>\r\n"; data += " </PostRatingInfo>\r\n"; } data += " </rates>\r\n"; } else data += " <rates />\r\n"; // модерилки if (list_moderate.count() > 0) { data += " <moderates>\r\n"; for (int i = 0; i < list_moderate.count(); i++) { QString description = list_moderate[i].Description; description.replace("&", "&"); description.replace("<", "<"); description.replace(">", ">"); data += " <PostModerateInfo>\r\n"; data += (QString)" <LocalModerateId>" + QString::number(list_moderate[i].ID) + "</LocalModerateId>\r\n"; data += (QString)" <MessageId>" + QString::number(list_moderate[i].IDMessage) + "</MessageId>\r\n"; data += (QString)" <ModerateAction>" + list_moderate[i].Action + "</ModerateAction>\r\n"; data += (QString)" <ModerateToForumId>" + QString::number(list_moderate[i].IDForum) + "</ModerateToForumId>\r\n"; data += (QString)" <Description>" + description + "</Description>\r\n"; data += (QString)" <AsModerator>" + QString::number(list_moderate[i].AsModerator) + "</AsModerator>\r\n"; data += " </PostModerateInfo>\r\n"; } data += " </moderates>\r\n"; } else data += " <moderates />\r\n"; data += " </postRequest>\r\n"; data += " </PostChange>\r\n"; data += " </soap:Body>\r\n"; data += "</soap:Envelope>\r\n"; header = ""; header += "POST /ws/janusAT.asmx HTTP/1.1\r\n"; header += "Host: rsdn.ru\r\n"; header += "Connection: close\r\n"; #ifdef AVALON_USE_ZLIB header += "Accept-Encoding: gzip\r\n"; #endif header += "User-Agent: " + getAgentString() + "\r\n"; header += "Content-Type: text/xml; charset=utf-8\r\n"; header += (QString)"Content-Length: " + QString::number(data.toUtf8().size()) + "\r\n"; header += "SOAPAction: \"http://rsdn.ru/Janus/PostChange\"\r\n"; }