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"