-
Notifications
You must be signed in to change notification settings - Fork 0
/
chatengine.cpp
63 lines (49 loc) · 1.5 KB
/
chatengine.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include "chatengine.h"
ChatEngine::ChatEngine(QObject *parent) : QObject(parent)
{
socket = new QTcpSocket(this);
connect(socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
}
ChatEngine::~ChatEngine()
{
delete socket;
}
bool ChatEngine::join(const QString & auth_token, const QString & nick, const QString channel)
{
socket->connectToHost(QString("irc.twitch.tv"), 6667);
socket->write("PASS oauth:" + auth_token.toUtf8() + "\r\n");
socket->write("NICK " + nick.toUtf8() + "\r\n");
socket->write("JOIN #" + channel.toUtf8() + "\r\n");
/*
socket->connectToHost(QString("192.16.64.180"), 6667);
socket->write("PASS oauth:" + auth_token.toUtf8() + "\r\n");
socket->write("NICK " + nick.toUtf8() + "\r\n");
socket->write("JOIN #_thelakmus_1440494034233\r\n");
*/
cur_channel = channel;
return 0;
}
bool ChatEngine::quit()
{
socket->write("QUIT\r\n");
socket->flush();
socket->disconnectFromHost();
return 0;
}
bool ChatEngine::sendToChat(const QString & msg)
{
socket->write(QString("PRIVMSG #" + cur_channel + " :" + msg + "\r\n").toLatin1());
return 0;
}
void ChatEngine::readyRead()
{
QString line = socket->readLine();
//qDebug() << line;
IRCMsgParser::IRCMsg msg = IRCMsgParser::parse(line);
if (msg.type == IRCMsgParser::PING)
socket->write(QString("PONG :" + msg.text).toLatin1());
else
emit newMessageReady(msg);
if(socket->canReadLine())
this->readyRead();
}