File indexing completed on 2024-05-12 16:16:03
0001 /* 0002 SPDX-FileCopyrightText: 2019-2023 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "languagetoolgetlistoflanguagejob.h" 0008 #include "textgrammarcheck_debug.h" 0009 0010 #include <QNetworkAccessManager> 0011 #include <QNetworkReply> 0012 using namespace TextGrammarCheck; 0013 LanguageToolGetListOfLanguageJob::LanguageToolGetListOfLanguageJob(QObject *parent) 0014 : QObject(parent) 0015 { 0016 } 0017 0018 LanguageToolGetListOfLanguageJob::~LanguageToolGetListOfLanguageJob() = default; 0019 0020 bool LanguageToolGetListOfLanguageJob::canStart() const 0021 { 0022 if (!mNetworkAccessManager || mUrl.isEmpty()) { 0023 return false; 0024 } 0025 return true; 0026 } 0027 0028 void LanguageToolGetListOfLanguageJob::start() 0029 { 0030 if (!canStart()) { 0031 qCWarning(TEXTGRAMMARCHECK_LOG) << "Impossible to start LanguageToolGetListOfLanguageJob"; 0032 deleteLater(); 0033 return; 0034 } 0035 QNetworkRequest request(QUrl::fromUserInput(mUrl)); 0036 addRequestAttribute(request); 0037 QNetworkReply *reply = mNetworkAccessManager->get(request); 0038 connect(reply, &QNetworkReply::finished, this, &LanguageToolGetListOfLanguageJob::slotCheckListOfLanguagesFinished); 0039 connect(mNetworkAccessManager, &QNetworkAccessManager::finished, this, &LanguageToolGetListOfLanguageJob::slotFinish); 0040 } 0041 0042 void LanguageToolGetListOfLanguageJob::slotFinish(QNetworkReply *reply) 0043 { 0044 if (reply->error() != QNetworkReply::NoError) { 0045 qCWarning(TEXTGRAMMARCHECK_LOG) << " Error reply - " << reply->errorString(); 0046 Q_EMIT error(reply->errorString()); 0047 } 0048 } 0049 0050 void LanguageToolGetListOfLanguageJob::slotCheckListOfLanguagesFinished() 0051 { 0052 auto reply = qobject_cast<QNetworkReply *>(sender()); 0053 if (reply) { 0054 const QByteArray data = reply->readAll(); 0055 Q_EMIT finished(QString::fromUtf8(data)); 0056 reply->deleteLater(); 0057 } 0058 deleteLater(); 0059 } 0060 0061 void LanguageToolGetListOfLanguageJob::addRequestAttribute(QNetworkRequest &request) const 0062 { 0063 request.setHeader(QNetworkRequest::ContentTypeHeader, QStringLiteral("application/x-www-form-urlencoded")); 0064 } 0065 0066 QString LanguageToolGetListOfLanguageJob::listOfLanguagePath() const 0067 { 0068 return mListOfLanguagePath; 0069 } 0070 0071 void LanguageToolGetListOfLanguageJob::setListOfLanguagePath(const QString &getListOfLanguagePath) 0072 { 0073 mListOfLanguagePath = getListOfLanguagePath; 0074 } 0075 0076 QNetworkAccessManager *LanguageToolGetListOfLanguageJob::networkAccessManager() const 0077 { 0078 return mNetworkAccessManager; 0079 } 0080 0081 void LanguageToolGetListOfLanguageJob::setNetworkAccessManager(QNetworkAccessManager *networkAccessManager) 0082 { 0083 mNetworkAccessManager = networkAccessManager; 0084 } 0085 0086 QString LanguageToolGetListOfLanguageJob::url() const 0087 { 0088 return mUrl; 0089 } 0090 0091 void LanguageToolGetListOfLanguageJob::setUrl(const QString &url) 0092 { 0093 mUrl = url; 0094 } 0095 0096 #include "moc_languagetoolgetlistoflanguagejob.cpp"