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 \
|
pasteview.h \
|
||||||
codepastersettings.h \
|
codepastersettings.h \
|
||||||
pastebindotcomprotocol.h \
|
pastebindotcomprotocol.h \
|
||||||
pastebindotcomsettings.h
|
pastebindotcomsettings.h \
|
||||||
|
pastebindotcaprotocol.h
|
||||||
SOURCES += cpasterplugin.cpp \
|
SOURCES += cpasterplugin.cpp \
|
||||||
settingspage.cpp \
|
settingspage.cpp \
|
||||||
protocol.cpp \
|
protocol.cpp \
|
||||||
@@ -18,7 +19,8 @@ SOURCES += cpasterplugin.cpp \
|
|||||||
pasteview.cpp \
|
pasteview.cpp \
|
||||||
codepastersettings.cpp \
|
codepastersettings.cpp \
|
||||||
pastebindotcomprotocol.cpp \
|
pastebindotcomprotocol.cpp \
|
||||||
pastebindotcomsettings.cpp
|
pastebindotcomsettings.cpp \
|
||||||
|
pastebindotcaprotocol.cpp
|
||||||
FORMS += settingspage.ui \
|
FORMS += settingspage.ui \
|
||||||
pasteselect.ui \
|
pasteselect.ui \
|
||||||
pasteview.ui \
|
pasteview.ui \
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include "pasteview.h"
|
#include "pasteview.h"
|
||||||
#include "codepasterprotocol.h"
|
#include "codepasterprotocol.h"
|
||||||
#include "pastebindotcomprotocol.h"
|
#include "pastebindotcomprotocol.h"
|
||||||
|
#include "pastebindotcaprotocol.h"
|
||||||
|
|
||||||
#include <coreplugin/actionmanager/actionmanager.h>
|
#include <coreplugin/actionmanager/actionmanager.h>
|
||||||
#include <coreplugin/coreconstants.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
|
// Create the protocols and append them to the Settings
|
||||||
Protocol *protos[] = { new CodePasterProtocol(),
|
Protocol *protos[] = { new CodePasterProtocol(),
|
||||||
new PasteBinDotComProtocol(),
|
new PasteBinDotComProtocol(),
|
||||||
|
new PasteBinDotCaProtocol(),
|
||||||
0};
|
0};
|
||||||
for(int i=0; protos[i] != 0; ++i) {
|
for(int i=0; protos[i] != 0; ++i) {
|
||||||
connect(protos[i], SIGNAL(pasteDone(QString)), this, SLOT(finishPost(QString)));
|
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