File indexing completed on 2024-05-12 04:57:43

0001 /*
0002     This file is part of Choqok, the KDE micro-blogging client
0003 
0004     SPDX-FileCopyrightText: 2008-2012 Mehrdad Momeny <mehrdad.momeny@gmail.com>
0005 
0006     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0007 */
0008 
0009 #include "tighturl.h"
0010 
0011 #include <QEventLoop>
0012 #include <QUrl>
0013 
0014 #include <KIO/StoredTransferJob>
0015 #include <KLocalizedString>
0016 #include <KPluginFactory>
0017 
0018 #include "notifymanager.h"
0019 
0020 K_PLUGIN_CLASS_WITH_JSON(TightUrl, "choqok_tighturl.json")
0021 
0022 TightUrl::TightUrl(QObject *parent, const QVariantList &)
0023     : Choqok::Shortener(QLatin1String("choqok_tighturl"), parent)
0024 {
0025 }
0026 
0027 QString TightUrl::shorten(const QString &url)
0028 {
0029     QUrl reqUrl(QLatin1String("http://2tu.us/"));
0030     QUrlQuery reqQuery;
0031     reqQuery.addQueryItem(QLatin1String("save"), QLatin1String("y"));
0032     reqQuery.addQueryItem(QLatin1String("url"), QUrl(url).url());
0033     reqUrl.setQuery(reqQuery);
0034 
0035     QEventLoop loop;
0036     KIO::StoredTransferJob *job = KIO::storedGet(reqUrl, KIO::Reload, KIO::HideProgressInfo);
0037     connect(job, &KIO::StoredTransferJob::result, &loop, &QEventLoop::quit);
0038     job->start();
0039     loop.exec();
0040 
0041     if (job->error() == KJob::NoError) {
0042         QString output(QLatin1String(job->data()));
0043         QRegExp rx(QLatin1String("<code>(.+)</code>"));
0044         rx.setMinimal(true);
0045         rx.indexIn(output);
0046         output = rx.cap(1);
0047         rx.setPattern(QLatin1String("href=[\'\"](.+)[\'\"]"));
0048         rx.indexIn(output);
0049         output = rx.cap(1);
0050         if (!output.isEmpty()) {
0051             return output;
0052         }
0053     } else {
0054         Choqok::NotifyManager::error(i18n("Cannot create a short URL.\n%1",
0055                                           job->errorString()), i18n("TightUrl Error"));
0056     }
0057     return url;
0058 }
0059 
0060 TightUrl::~TightUrl()
0061 {
0062 }
0063 
0064 #include "moc_tighturl.cpp"
0065 #include "tighturl.moc"