ctcpXDelimDequoteHash[XQUOTE + QByteArray("a")] = XDELIM;
}
-QByteArray CtcpHandler::dequote(const QByteArray &message) {
+QByteArray CtcpHandler::lowLevelQuote(const QByteArray &message) {
+ QByteArray quotedMessage = message;
+ QHash<QByteArray, QByteArray>::const_iterator quoteIter = ctcpMDequoteHash.constBegin();
+ while(quoteIter != ctcpMDequoteHash.constEnd()) {
+ quotedMessage.replace(quoteIter.value(), quoteIter.key());
+ quoteIter++;
+ }
+ return quotedMessage;
+}
+
+QByteArray CtcpHandler::lowLevelDequote(const QByteArray &message) {
QByteArray dequotedMessage;
QByteArray messagepart;
QHash<QByteArray, QByteArray>::iterator ctcpquote;
return dequotedMessage;
}
+QByteArray CtcpHandler::xdelimQuote(const QByteArray &message) {
+ QByteArray quotedMessage = message;
+ QHash<QByteArray, QByteArray>::const_iterator quoteIter = ctcpXDelimDequoteHash.constBegin();
+ while(quoteIter != ctcpXDelimDequoteHash.constEnd()) {
+ quotedMessage.replace(quoteIter.value(), quoteIter.key());
+ quoteIter++;
+ }
+ return quotedMessage;
+}
QByteArray CtcpHandler::xdelimDequote(const QByteArray &message) {
QByteArray dequotedMessage;
QByteArray ctcp;
//lowlevel message dequote
- QByteArray dequotedMessage = dequote(message);
+ QByteArray dequotedMessage = lowLevelDequote(message);
CtcpType ctcptype = messageType == Message::Notice
? CtcpReply
}
QByteArray CtcpHandler::pack(const QByteArray &ctcpTag, const QByteArray &message) {
- return XDELIM + ctcpTag + ' ' + message + XDELIM;
+ return XDELIM + ctcpTag + ' ' + xdelimQuote(message) + XDELIM;
}
-// TODO handle encodings correctly!
void CtcpHandler::query(const QString &bufname, const QString &ctcpTag, const QString &message) {
QList<QByteArray> params;
- params << serverEncode(bufname) << pack(serverEncode(ctcpTag), userEncode(bufname, message));
+ params << serverEncode(bufname) << lowLevelQuote(pack(serverEncode(ctcpTag), userEncode(bufname, message)));
emit putCmd("PRIVMSG", params);
}
void CtcpHandler::reply(const QString &bufname, const QString &ctcpTag, const QString &message) {
QList<QByteArray> params;
- params << serverEncode(bufname) << pack(serverEncode(ctcpTag), userEncode(bufname, message));
+ params << serverEncode(bufname) << lowLevelQuote(pack(serverEncode(ctcpTag), userEncode(bufname, message)));
emit putCmd("NOTICE", params);
}
void parse(Message::Type, const QString &prefix, const QString &target, const QByteArray &message);
- QByteArray dequote(const QByteArray &);
+ QByteArray lowLevelQuote(const QByteArray &);
+ QByteArray lowLevelDequote(const QByteArray &);
+ QByteArray xdelimQuote(const QByteArray &);
QByteArray xdelimDequote(const QByteArray &);
QByteArray pack(const QByteArray &ctcpTag, const QByteArray &message);