void AWebservice::postChangeCommit_WebserviceQuery (QString& header, QString& data, const QString& cookie, 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 += " <PostChangeCommit xmlns=\"http://rsdn.ru/Janus/\" />\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/PostChangeCommit\"\r\n"; if (cookie.length() > 0) header += "Cookie: " + cookie + "\r\n"; }
void AWebservice::prepareRequest (QNetworkRequest& request, const QString& proto, const QString& action, qint64 length) { request.setUrl(proto.toLower() + "://rsdn.ru/ws/janusAT.asmx"); request.setHeader(QNetworkRequest::CookieHeader, QVariant()); request.setRawHeader("Host", "rsdn.ru"); request.setRawHeader("Connection", "close"); request.setRawHeader("User-Agent", getAgentString().toUtf8()); request.setRawHeader("Content-Type", "text/xml; charset=utf-8"); request.setRawHeader("Content-Length", QString::number(length).toUtf8()); request.setRawHeader("SOAPAction", (QString("\"http://rsdn.ru/Janus/") + action + "\"").toUtf8()); #ifdef AVALON_USE_ZLIB request.setRawHeader("Accept-Encoding", "gzip"); #endif }
void AWebservice::getUserList_WebserviceQuery (QString& header, QString& data, const QString& row_version, 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 += " <GetNewUsers xmlns=\"http://rsdn.ru/Janus/\">\r\n"; data += " <userRequest>\r\n"; data += (QString)" <userName>" + rsdn_login + "</userName>\r\n"; data += (QString)" <password>" + rsdn_password + "</password>\r\n"; data += (QString)" <lastRowVersion>" + row_version + "</lastRowVersion>\r\n"; data += " <maxOutput>0</maxOutput>\r\n"; data += " </userRequest>\r\n"; data += " </GetNewUsers>\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/GetNewUsers\"\r\n"; }
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"; }
void AWebservice::getMessageList_WebserviceQuery (QString& header, QString& data, const ARowVersion& row_version, const ADataQuery& query, 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 += " <GetNewData xmlns=\"http://rsdn.ru/Janus/\">\r\n"; data += " <changeRequest>\r\n"; data += (QString)" <userName>" + rsdn_login + "</userName>\r\n"; data += (QString)" <password>" + rsdn_password + "</password>\r\n"; // подписанные форумы if (query.Forum.count() > 0) { data += " <subscribedForums>\r\n"; for (int i = 0; i < query.Forum.count(); i++) { data += " <RequestForumInfo>\r\n"; data += (QString)" <forumId>" + QString::number(query.Forum[i].IDForum) + "</forumId>\r\n"; data += (QString)" <isFirstRequest>" + (query.Forum[i].IsFirst ? "true" : "false") + "</isFirstRequest>\r\n"; data += " </RequestForumInfo>\r\n"; } data += " </subscribedForums>\r\n"; } else data += " <subscribedForums />\r\n"; // версии data += (QString)" <ratingRowVersion>" + row_version.Rating + "</ratingRowVersion>\r\n"; data += (QString)" <messageRowVersion>" + row_version.Message + "</messageRowVersion>\r\n"; data += (QString)" <moderateRowVersion>" + row_version.Moderate + "</moderateRowVersion>\r\n"; // ID оборванных сообщений, то есть сообщений без родителя. if (query.BrokenMessage.count() > 0) { data += " <breakMsgIds>\r\n"; for (int i = 0; i < query.BrokenMessage.count(); i++) data += (QString)" <int>" + QString::number(query.BrokenMessage[i]) + "</int>\r\n"; data += " </breakMsgIds>\r\n"; } else data += " <breakMsgIds />\r\n"; // ID топика не имеющего корневого сообщения или просто ID топика, который хочется выкачать целиком // topicId == messageId первого сообщения топика if (query.BrokenTopic.count() > 0) { data += " <breakTopicIds>\r\n"; for (int i = 0; i < query.BrokenTopic.count(); i++) data += (QString)" <int>" + QString::number(query.BrokenTopic[i]) + "</int>\r\n"; data += " </breakTopicIds>\r\n"; } else data += " <breakTopicIds />\r\n"; data += " <maxOutput>0</maxOutput>\r\n"; data += " </changeRequest>\r\n"; data += " </GetNewData>\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/GetNewData\"\r\n"; }