forked from qt-creator/qt-creator
add pastebin.ca support for codepaster
- cannot list and does not need any preferences, as there is only one server
This commit is contained in:
@@ -10,7 +10,8 @@ HEADERS += cpasterplugin.h \
|
||||
pasteview.h \
|
||||
codepastersettings.h \
|
||||
pastebindotcomprotocol.h \
|
||||
pastebindotcomsettings.h
|
||||
pastebindotcomsettings.h \
|
||||
pastebindotcaprotocol.h
|
||||
SOURCES += cpasterplugin.cpp \
|
||||
settingspage.cpp \
|
||||
protocol.cpp \
|
||||
@@ -18,7 +19,8 @@ SOURCES += cpasterplugin.cpp \
|
||||
pasteview.cpp \
|
||||
codepastersettings.cpp \
|
||||
pastebindotcomprotocol.cpp \
|
||||
pastebindotcomsettings.cpp
|
||||
pastebindotcomsettings.cpp \
|
||||
pastebindotcaprotocol.cpp
|
||||
FORMS += settingspage.ui \
|
||||
pasteselect.ui \
|
||||
pasteview.ui \
|
||||
|
@@ -35,6 +35,7 @@
|
||||
#include "pasteview.h"
|
||||
#include "codepasterprotocol.h"
|
||||
#include "pastebindotcomprotocol.h"
|
||||
#include "pastebindotcaprotocol.h"
|
||||
|
||||
#include <coreplugin/actionmanager/actionmanager.h>
|
||||
#include <coreplugin/coreconstants.h>
|
||||
@@ -92,6 +93,7 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m
|
||||
// Create the protocols and append them to the Settings
|
||||
Protocol *protos[] = { new CodePasterProtocol(),
|
||||
new PasteBinDotComProtocol(),
|
||||
new PasteBinDotCaProtocol(),
|
||||
0};
|
||||
for(int i=0; protos[i] != 0; ++i) {
|
||||
connect(protos[i], SIGNAL(pasteDone(QString)), this, SLOT(finishPost(QString)));
|
||||
|
101
src/plugins/cpaster/pastebindotcaprotocol.cpp
Normal file
101
src/plugins/cpaster/pastebindotcaprotocol.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
** Commercial Usage
|
||||
**
|
||||
** Licensees holding valid Qt Commercial licenses may use this file in
|
||||
** accordance with the Qt Commercial License Agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Nokia.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** If you are unsure which license is appropriate for your use, please
|
||||
** contact the sales department at http://www.qtsoftware.com/contact.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#include "pastebindotcaprotocol.h"
|
||||
#include "cgi.h"
|
||||
|
||||
using namespace Core;
|
||||
|
||||
PasteBinDotCaProtocol::PasteBinDotCaProtocol()
|
||||
{
|
||||
connect(&http, SIGNAL(requestFinished(int,bool)),
|
||||
this, SLOT(postRequestFinished(int,bool)));
|
||||
}
|
||||
|
||||
void PasteBinDotCaProtocol::fetch(const QString &id)
|
||||
{
|
||||
QString link = QLatin1String("http://pastebin.ca/raw/");
|
||||
link.append(id);
|
||||
QUrl url(link);
|
||||
QNetworkRequest r(url);
|
||||
|
||||
reply = manager.get(r);
|
||||
connect(reply, SIGNAL(finished()), this, SLOT(fetchFinished()));
|
||||
fetchId = id;
|
||||
}
|
||||
|
||||
void PasteBinDotCaProtocol::paste(const QString &text,
|
||||
const QString &username,
|
||||
const QString &comment,
|
||||
const QString &description)
|
||||
{
|
||||
Q_UNUSED(comment);
|
||||
Q_UNUSED(description);
|
||||
QString data = "content=";
|
||||
data += CGI::encodeURL(text);
|
||||
data += "&description=";
|
||||
data += CGI::encodeURL(description);
|
||||
data += "&type=1&expiry=1%20day&name=";
|
||||
data += CGI::encodeURL(username);
|
||||
QHttpRequestHeader header("POST", "/quiet-paste.php");
|
||||
header.setValue("host", "pastebin.ca" );
|
||||
header.setContentType("application/x-www-form-urlencoded");
|
||||
http.setHost("pastebin.ca", QHttp::ConnectionModeHttp);
|
||||
header.setValue("User-Agent", "CreatorPastebin");
|
||||
postId = http.request(header, data.toAscii());
|
||||
}
|
||||
|
||||
void PasteBinDotCaProtocol::postRequestFinished(int id, bool error)
|
||||
{
|
||||
QString link;
|
||||
if (id == postId) {
|
||||
if (!error) {
|
||||
QByteArray data = http.readAll();
|
||||
link = QString::fromLatin1("http://pastebin.ca/") + QString(data).remove("SUCCESS:");
|
||||
} else
|
||||
link = http.errorString();
|
||||
emit pasteDone(link);
|
||||
}
|
||||
}
|
||||
|
||||
void PasteBinDotCaProtocol::fetchFinished()
|
||||
{
|
||||
QString title;
|
||||
QString content;
|
||||
bool error = reply->error();
|
||||
if (error) {
|
||||
content = reply->errorString();
|
||||
} else {
|
||||
title = QString::fromLatin1("Pastebin.ca: %1").arg(fetchId);
|
||||
content = reply->readAll();
|
||||
}
|
||||
reply->deleteLater();
|
||||
reply = 0;
|
||||
emit fetchDone(title, content, error);
|
||||
}
|
66
src/plugins/cpaster/pastebindotcaprotocol.h
Normal file
66
src/plugins/cpaster/pastebindotcaprotocol.h
Normal file
@@ -0,0 +1,66 @@
|
||||
/**************************************************************************
|
||||
**
|
||||
** This file is part of Qt Creator
|
||||
**
|
||||
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
**
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
** Commercial Usage
|
||||
**
|
||||
** Licensees holding valid Qt Commercial licenses may use this file in
|
||||
** accordance with the Qt Commercial License Agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and Nokia.
|
||||
**
|
||||
** GNU Lesser General Public License Usage
|
||||
**
|
||||
** Alternatively, this file may be used under the terms of the GNU Lesser
|
||||
** General Public License version 2.1 as published by the Free Software
|
||||
** Foundation and appearing in the file LICENSE.LGPL included in the
|
||||
** packaging of this file. Please review the following information to
|
||||
** ensure the GNU Lesser General Public License version 2.1 requirements
|
||||
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** If you are unsure which license is appropriate for your use, please
|
||||
** contact the sales department at http://www.qtsoftware.com/contact.
|
||||
**
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef PASTEBINDOTCAPROTOCOL_H
|
||||
#define PASTEBINDOTCAPROTOCOL_H
|
||||
#include "protocol.h"
|
||||
#include <QtNetwork/QNetworkAccessManager>
|
||||
#include <QtNetwork/QNetworkReply>
|
||||
#include <QtNetwork/QHttp>
|
||||
|
||||
class PasteBinDotCaProtocol : public Protocol
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
PasteBinDotCaProtocol();
|
||||
QString name() const { return QLatin1String("Pastebin.Ca"); }
|
||||
|
||||
bool hasSettings() const { return false; }
|
||||
bool canList() const { return false; }
|
||||
|
||||
void fetch(const QString &id);
|
||||
void paste(const QString &text,
|
||||
const QString &username = "",
|
||||
const QString &comment = "",
|
||||
const QString &description = "");
|
||||
public slots:
|
||||
void fetchFinished();
|
||||
|
||||
void postRequestFinished(int id, bool error);
|
||||
|
||||
private:
|
||||
QNetworkAccessManager manager;
|
||||
QNetworkReply *reply;
|
||||
QString fetchId;
|
||||
|
||||
QHttp http;
|
||||
int postId;
|
||||
};
|
||||
|
||||
#endif // PASTEBINDOTCAPROTOCOL_H
|
Reference in New Issue
Block a user