File indexing completed on 2024-05-05 05:02:21
0001 /* 0002 SPDX-FileCopyrightText: 2017-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "ruqolawebsocket.h" 0008 #include "config-ruqola.h" 0009 #include "ruqola_debug.h" 0010 #include "ruqolalogger.h" 0011 0012 #include <QWebSocket> 0013 0014 RuqolaWebSocket::RuqolaWebSocket(RuqolaLogger *logger, QObject *parent) 0015 : AbstractWebSocket(parent) 0016 , mLogger(logger) 0017 , mWebSocket(new QWebSocket) 0018 { 0019 connect(mWebSocket, &QWebSocket::connected, this, &RuqolaWebSocket::connected); 0020 connect(mWebSocket, &QWebSocket::disconnected, this, &RuqolaWebSocket::disconnected); 0021 connect(mWebSocket, &QWebSocket::textMessageReceived, this, &RuqolaWebSocket::slotTextMessageReceived); 0022 connect(mWebSocket, &QWebSocket::sslErrors, this, &RuqolaWebSocket::sslErrors); 0023 connect(mWebSocket, &QWebSocket::errorOccurred, this, &RuqolaWebSocket::slotError); 0024 } 0025 0026 RuqolaWebSocket::~RuqolaWebSocket() 0027 { 0028 delete mWebSocket; 0029 } 0030 0031 void RuqolaWebSocket::openUrl(const QUrl &url) 0032 { 0033 QNetworkRequest request; 0034 request.setUrl(url); 0035 request.setHeader(QNetworkRequest::UserAgentHeader, 0036 QStringLiteral("webkit/Ruqola-%1 (%2 %3) webkit/Ruqola-%1") 0037 .arg(QStringLiteral(RUQOLA_VERSION), QSysInfo::prettyProductName(), QSysInfo::currentCpuArchitecture())); 0038 mWebSocket->open(request); 0039 } 0040 0041 qint64 RuqolaWebSocket::sendTextMessage(const QString &message) 0042 { 0043 qCDebug(RUQOLA_LOG) << " qint64 RuqolaWebSocket::sendTextMessage(const QString &message)" << message; 0044 if (mLogger) { 0045 mLogger->dataSent(message.toUtf8()); 0046 } 0047 return mWebSocket->sendTextMessage(message); 0048 } 0049 0050 bool RuqolaWebSocket::isValid() const 0051 { 0052 return mWebSocket->isValid(); 0053 } 0054 0055 void RuqolaWebSocket::flush() 0056 { 0057 mWebSocket->flush(); 0058 } 0059 0060 void RuqolaWebSocket::close() 0061 { 0062 mWebSocket->close(); 0063 } 0064 0065 QAbstractSocket::SocketError RuqolaWebSocket::error() const 0066 { 0067 return mWebSocket->error(); 0068 } 0069 0070 QString RuqolaWebSocket::errorString() const 0071 { 0072 return mWebSocket->errorString(); 0073 } 0074 0075 QUrl RuqolaWebSocket::requestUrl() const 0076 { 0077 return mWebSocket->requestUrl(); 0078 } 0079 0080 QWebSocketProtocol::CloseCode RuqolaWebSocket::closeCode() const 0081 { 0082 return mWebSocket->closeCode(); 0083 } 0084 0085 QString RuqolaWebSocket::closeReason() const 0086 { 0087 return mWebSocket->closeReason(); 0088 } 0089 0090 qint64 RuqolaWebSocket::sendBinaryMessage(const QByteArray &data) 0091 { 0092 return mWebSocket->sendBinaryMessage(data); 0093 } 0094 0095 void RuqolaWebSocket::ignoreSslErrors() 0096 { 0097 mWebSocket->ignoreSslErrors(); 0098 } 0099 0100 void RuqolaWebSocket::slotTextMessageReceived(const QString &msg) 0101 { 0102 if (mLogger) { 0103 mLogger->dataReceived(msg.toUtf8()); 0104 } 0105 Q_EMIT textMessageReceived(msg); 0106 } 0107 0108 void RuqolaWebSocket::slotError(QAbstractSocket::SocketError error) 0109 { 0110 Q_EMIT socketError(error, mWebSocket->errorString()); 0111 } 0112 0113 #include "moc_ruqolawebsocket.cpp"