diff --git a/dataengines/potd/noaaprovider.cpp b/dataengines/potd/noaaprovider.cpp index 0e8a3772a..3f262f3da 100644 --- a/dataengines/potd/noaaprovider.cpp +++ b/dataengines/potd/noaaprovider.cpp @@ -1,121 +1,121 @@ /* * Copyright (C) 2007 Tobias Koenig * Copyright 2008 by Anne-Marie Mahfouf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "noaaprovider.h" #include #include #include #include NOAAProvider::NOAAProvider(QObject *parent, const QVariantList &args) : PotdProvider(parent, args) { const QUrl url(QStringLiteral("http://www.nesdis.noaa.gov/content/imagery-and-data")); KIO::StoredTransferJob *job = KIO::storedGet(url, KIO::NoReload, KIO::HideProgressInfo); connect(job, &KIO::StoredTransferJob::finished, this, &NOAAProvider::firstPageRequestFinished); } NOAAProvider::~NOAAProvider() = default; QImage NOAAProvider::image() const { return mImage; } void NOAAProvider::firstPageRequestFinished(KJob* _job) { KIO::StoredTransferJob *job = static_cast( _job ); if (job->error()) { emit error(this); return; } const QString data = QString::fromUtf8( job->data() ); // Using regular expression could be fragile in such case, but the HTML // NOAA page itself is not a valid XML file and unfortunately it could // not be parsed successfully till the content we want. And we do not want // to use heavy weight QtWebkit. So we use QRegularExpression to capture // the wanted url here. QString url; - QRegularExpression re(QStringLiteral("href=\"(.*)\">\"Latest\"Latest( _job ); if (job->error()) { emit error(this); return; } const QString data = QString::fromUtf8( job->data() ); // Using regular expression could be fragile in such case, but the HTML // NOAA page itself is not a valid XML file and unfortunately it could // not be parsed successfully till the content we want. And we do not want // to use heavy weight QtWebkit. So we use QRegularExpression to capture // the wanted url here. QString url; QRegularExpression re(QStringLiteral("a href='(.*)'>( _job ); if ( job->error() ) { emit error(this); return; } mImage = QImage::fromData( job->data() ); emit finished(this); } K_PLUGIN_CLASS_WITH_JSON(NOAAProvider, "noaaprovider.json") #include "noaaprovider.moc"