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"