Example #1
0
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";
}
Example #2
0
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
}
Example #3
0
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";
}
Example #4
0
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("&", "&amp;");
			subject.replace("<", "&lt;");
			subject.replace(">", "&gt;");

			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("&", "&amp;");
			description.replace("<", "&lt;");
			description.replace(">", "&gt;");

			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";
}
Example #5
0
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";
}