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"