Warning, file /network/choqok/plugins/shorteners/ur1_ca/ur1_ca.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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 "ur1_ca.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(Ur1_ca, "choqok_ur1_ca.json") 0021 0022 Ur1_ca::Ur1_ca(QObject *parent, const QVariantList &) 0023 : Choqok::Shortener(QLatin1String("choqok_ur1_ca"), parent) 0024 { 0025 } 0026 0027 Ur1_ca::~Ur1_ca() 0028 { 0029 } 0030 0031 QString Ur1_ca::shorten(const QString &url) 0032 { 0033 QUrl reqUrl(QLatin1String("http://ur1.ca/")); 0034 QString temp; 0035 temp = QLatin1String(QUrl::toPercentEncoding(url)); 0036 0037 QByteArray parg("longurl="); 0038 parg.append(temp.toLatin1()); 0039 0040 QEventLoop loop; 0041 KIO::StoredTransferJob *job = KIO::storedHttpPost(parg, reqUrl, KIO::HideProgressInfo); 0042 job->addMetaData(QLatin1String("content-type"), QLatin1String("Content-Type: application/x-www-form-urlencoded")); 0043 connect(job, &KIO::StoredTransferJob::result, &loop, &QEventLoop::quit); 0044 job->start(); 0045 loop.exec(); 0046 0047 if (job->error() == KJob::NoError) { 0048 QString output(QLatin1String(job->data())); 0049 QRegExp rx(QLatin1String("<p class=[\'\"]success[\'\"]>(.*)</p>")); 0050 rx.setMinimal(true); 0051 rx.indexIn(output); 0052 output = rx.cap(1); 0053 rx.setPattern(QLatin1String("href=[\'\"](.*)[\'\"]")); 0054 rx.indexIn(output); 0055 output = rx.cap(1); 0056 if (!output.isEmpty()) { 0057 return output; 0058 } 0059 } else { 0060 Choqok::NotifyManager::error(i18n("Cannot create a short URL.\n%1", job->errorString()), i18n("ur1.ca Error")); 0061 } 0062 return url; 0063 } 0064 0065 #include "moc_ur1_ca.cpp" 0066 #include "ur1_ca.moc"