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"