diff --git a/src/plugins/cpaster/codepasterprotocol.cpp b/src/plugins/cpaster/codepasterprotocol.cpp
index 2e444dcf5295ef5fae6a8c7febb3825216f16297..39b21af8e6441711510a9b0b61ce495e597f7591 100644
--- a/src/plugins/cpaster/codepasterprotocol.cpp
+++ b/src/plugins/cpaster/codepasterprotocol.cpp
@@ -48,7 +48,8 @@ enum { debug = 0 };
 
 namespace CodePaster {
 
-CodePasterProtocol::CodePasterProtocol() :
+CodePasterProtocol::CodePasterProtocol(const NetworkAccessManagerProxyPtr &nw) :
+    NetworkProtocol(nw),
     m_page(new CodePaster::CodePasterSettingsPage),
     m_pasteReply(0),
     m_fetchReply(0),
@@ -98,10 +99,7 @@ void CodePasterProtocol::fetch(const QString &id)
     link.append(hostName);
     link.append("/?format=raw&id=");
     link.append(id);
-    QUrl url(link);
-    QNetworkRequest r(url);
-
-    m_fetchReply = m_manager.get(r);
+    m_fetchReply = httpGet(link);
     connect(m_fetchReply, SIGNAL(finished()), this, SLOT(fetchFinished()));
     m_fetchId = id;
 }
@@ -116,9 +114,7 @@ void CodePasterProtocol::list()
     QString link = QLatin1String("http://");
     link += hostName;
     link += QLatin1String("/?command=browse&format=raw");
-    QUrl url(link);
-    QNetworkRequest r(url);
-    m_listReply = m_manager.get(r);
+    m_listReply = httpGet(link);
     connect(m_listReply, SIGNAL(finished()), this, SLOT(listFinished()));
 }
 
@@ -142,9 +138,7 @@ void CodePasterProtocol::paste(const QString &text,
     data += "&poster=";
     data += CGI::encodeURL(username).toLatin1();
 
-    QUrl url(QLatin1String("http://") + hostName);
-    QNetworkRequest r(url);
-    m_pasteReply = m_manager.post(r, data);
+    m_pasteReply = httpPost(QLatin1String("http://") + hostName, data);
     connect(m_pasteReply, SIGNAL(finished()), this, SLOT(pasteFinished()));
 }
 
diff --git a/src/plugins/cpaster/codepasterprotocol.h b/src/plugins/cpaster/codepasterprotocol.h
index f6e6df058a8b61aa42dc4a7697279de7afa7d035..554169fd19463733f2c4cf40fc0c2cc8b854db2a 100644
--- a/src/plugins/cpaster/codepasterprotocol.h
+++ b/src/plugins/cpaster/codepasterprotocol.h
@@ -32,8 +32,6 @@
 
 #include "protocol.h"
 
-#include <QtNetwork/QNetworkAccessManager>
-
 QT_BEGIN_NAMESPACE
 class QNetworkReply;
 QT_END_NAMESPACE
@@ -42,11 +40,11 @@ namespace CodePaster {
 
 class CodePasterSettingsPage;
 
-class CodePasterProtocol : public Protocol
+class CodePasterProtocol : public NetworkProtocol
 {
     Q_OBJECT
 public:
-    CodePasterProtocol();
+    explicit CodePasterProtocol(const NetworkAccessManagerProxyPtr &nw);
     ~CodePasterProtocol();
 
     QString name() const;
@@ -70,7 +68,6 @@ public slots:
 private:
     bool isValidHostName(const QString& hostName);
     CodePasterSettingsPage *m_page;
-    QNetworkAccessManager m_manager;
     QNetworkReply *m_pasteReply;
     QNetworkReply *m_fetchReply;
     QNetworkReply *m_listReply;
diff --git a/src/plugins/cpaster/cpasterplugin.cpp b/src/plugins/cpaster/cpasterplugin.cpp
index ea2dccc5173aa02314b556d98c5d960353a52458..2dba25ce13e549d8f5ee34210d6732c655912d17 100644
--- a/src/plugins/cpaster/cpasterplugin.cpp
+++ b/src/plugins/cpaster/cpasterplugin.cpp
@@ -65,7 +65,9 @@ using namespace CodePaster;
 using namespace Core;
 using namespace TextEditor;
 
-CodepasterPlugin::CodepasterPlugin() : m_settings(new Settings)
+CodepasterPlugin::CodepasterPlugin() :
+    m_settings(new Settings),
+    m_postEditorAction(0), m_postClipboardAction(0), m_fetchAction(0)
 {
 }
 
@@ -89,9 +91,10 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m
     addAutoReleasedObject(settingsPage);
 
     // Create the protocols and append them to the Settings
-    Protocol *protos[] =  { new CodePasterProtocol(),
-                            new PasteBinDotComProtocol(),
-                            new PasteBinDotCaProtocol(),
+    const QSharedPointer<NetworkAccessManagerProxy> networkAccessMgrProxy(new NetworkAccessManagerProxy);
+    Protocol *protos[] =  { new CodePasterProtocol(networkAccessMgrProxy),
+                            new PasteBinDotComProtocol(networkAccessMgrProxy),
+                            new PasteBinDotCaProtocol(networkAccessMgrProxy),
                             0};
     for(int i=0; protos[i] != 0; ++i) {
         connect(protos[i], SIGNAL(pasteDone(QString)), this, SLOT(finishPost(QString)));
@@ -116,10 +119,15 @@ bool CodepasterPlugin::initialize(const QStringList &arguments, QString *error_m
 
     Core::Command *command;
 
-    m_postAction = new QAction(tr("Paste Snippet..."), this);
-    command = actionManager->registerAction(m_postAction, "CodePaster.Post", globalcontext);
+    m_postEditorAction = new QAction(tr("Paste Snippet..."), this);
+    command = actionManager->registerAction(m_postEditorAction, "CodePaster.Post", globalcontext);
     command->setDefaultKeySequence(QKeySequence(tr("Alt+C,Alt+P")));
-    connect(m_postAction, SIGNAL(triggered()), this, SLOT(post()));
+    connect(m_postEditorAction, SIGNAL(triggered()), this, SLOT(postEditor()));
+    cpContainer->addAction(command);
+
+    m_postClipboardAction = new QAction(tr("Paste Clipboard..."), this);
+    command = actionManager->registerAction(m_postClipboardAction, "CodePaster.PostClipboard", globalcontext);
+    connect(m_postClipboardAction, SIGNAL(triggered()), this, SLOT(postClipboard()));
     cpContainer->addAction(command);
 
     m_fetchAction = new QAction(tr("Fetch Snippet..."), this);
@@ -145,6 +153,28 @@ void CodepasterPlugin::shutdown()
     }
 }
 
+void CodepasterPlugin::postEditor()
+{
+    const IEditor* editor = EditorManager::instance()->currentEditor();
+    const BaseTextEditorEditable *textEditor = qobject_cast<const BaseTextEditorEditable *>(editor);
+    if (!textEditor)
+        return;
+
+    QString data = textEditor->selectedText();
+    if (data.isEmpty())
+        data = textEditor->contents();
+    if (!data.isEmpty())
+        post(data, textEditor->editor()->mimeType());
+}
+
+void CodepasterPlugin::postClipboard()
+{
+    QString subtype = QLatin1String("plain");
+    const QString text = qApp->clipboard()->text(subtype, QClipboard::Clipboard);
+    if (!text.isEmpty())
+        post(text, QString());
+}
+
 static inline void fixSpecialCharacters(QString &data)
 {
     QChar *uc = data.data();
@@ -167,18 +197,8 @@ static inline void fixSpecialCharacters(QString &data)
     }
 }
 
-void CodepasterPlugin::post()
+void CodepasterPlugin::post(QString data, const QString &mimeType)
 {
-    const IEditor* editor = EditorManager::instance()->currentEditor();
-    const BaseTextEditorEditable *textEditor = qobject_cast<const BaseTextEditorEditable *>(editor);
-    if (!textEditor)
-        return;
-
-    QString data = textEditor->selectedText();
-    if (data.isEmpty())
-        data = textEditor->contents();
-    if (data.isEmpty())
-        return;
     fixSpecialCharacters(data);
     FileDataList lst = splitDiffToFiles(data.toLatin1());
     QString username = m_settings->username;
@@ -199,7 +219,7 @@ void CodepasterPlugin::post()
     protocolName = view.protocol();
     foreach(Protocol *protocol, m_protocols) {
         if (protocol->name() == protocolName) {
-            const Protocol::ContentType ct = Protocol::contentType(textEditor->editor()->mimeType());
+            const Protocol::ContentType ct = Protocol::contentType(mimeType);
             protocol->paste(data, ct, username, comment, description);
             break;
         }
diff --git a/src/plugins/cpaster/cpasterplugin.h b/src/plugins/cpaster/cpasterplugin.h
index c07695c28aac44e255bee6e1936970c4bdccf7b7..6278cd1473ed9720dcaadb3c140876dfd447d4e5 100644
--- a/src/plugins/cpaster/cpasterplugin.h
+++ b/src/plugins/cpaster/cpasterplugin.h
@@ -58,7 +58,8 @@ public:
     virtual void shutdown();
 
 public slots:
-    void post();
+    void postEditor();
+    void postClipboard();
     void fetch();
     void finishPost(const QString &link);
     void finishFetch(const QString &titleDescription,
@@ -66,8 +67,11 @@ public slots:
                      bool error);
 
 private:
+    void post(QString data, const QString &mimeType);
+
     const QSharedPointer<Settings> m_settings;
-    QAction *m_postAction;
+    QAction *m_postEditorAction;
+    QAction *m_postClipboardAction;
     QAction *m_fetchAction;
     QList<Protocol*> m_protocols;
     QStringList m_fetchedSnippets;
diff --git a/src/plugins/cpaster/pastebindotcaprotocol.cpp b/src/plugins/cpaster/pastebindotcaprotocol.cpp
index c40276cd169c906475936927ba1134712746acb7..7984ee64c8a4afc8fcb3b43470d6d6bc0d8a0fa3 100644
--- a/src/plugins/cpaster/pastebindotcaprotocol.cpp
+++ b/src/plugins/cpaster/pastebindotcaprotocol.cpp
@@ -32,11 +32,13 @@
 
 #include <QtNetwork/QNetworkReply>
 
-using namespace Core;
 namespace CodePaster {
-PasteBinDotCaProtocol::PasteBinDotCaProtocol()
+PasteBinDotCaProtocol::PasteBinDotCaProtocol(const NetworkAccessManagerProxyPtr &nw) :
+    NetworkProtocol(nw),
+    m_fetchReply(0),
+    m_postId(-1)
 {
-    connect(&http, SIGNAL(requestFinished(int,bool)),
+    connect(&m_http, SIGNAL(requestFinished(int,bool)),
             this, SLOT(postRequestFinished(int,bool)));
 }
 
@@ -44,12 +46,9 @@ 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;
+    m_fetchReply = httpGet(link);
+    connect(m_fetchReply, SIGNAL(finished()), this, SLOT(fetchFinished()));
+    m_fetchId = id;
 }
 
 void PasteBinDotCaProtocol::paste(const QString &text,
@@ -69,20 +68,20 @@ void PasteBinDotCaProtocol::paste(const QString &text,
     QHttpRequestHeader header("POST", "/quiet-paste.php");
     header.setValue("host", "pastebin.ca" );
     header.setContentType("application/x-www-form-urlencoded");
-    http.setHost("pastebin.ca", QHttp::ConnectionModeHttp);
+    m_http.setHost("pastebin.ca", QHttp::ConnectionModeHttp);
     header.setValue("User-Agent", "CreatorPastebin");
-    postId = http.request(header, data.toAscii());
+    m_postId = m_http.request(header, data.toAscii());
 }
 
 void PasteBinDotCaProtocol::postRequestFinished(int id, bool error)
 {
     QString link;
-    if (id == postId) {
+    if (id == m_postId) {
         if (!error) {
-            QByteArray data = http.readAll();
+            QByteArray data = m_http.readAll();
             link = QString::fromLatin1("http://pastebin.ca/") + QString(data).remove("SUCCESS:");
         } else
-            link = http.errorString();
+            link = m_http.errorString();
         emit pasteDone(link);
     }
 }
@@ -91,15 +90,15 @@ void PasteBinDotCaProtocol::fetchFinished()
 {
     QString title;
     QString content;
-    bool error = reply->error();
+    bool error = m_fetchReply->error();
     if (error) {
-        content = reply->errorString();
+        content = m_fetchReply->errorString();
     } else {
-        title = QString::fromLatin1("Pastebin.ca: %1").arg(fetchId);
-        content = reply->readAll();
+        title = QString::fromLatin1("Pastebin.ca: %1").arg(m_fetchId);
+        content = m_fetchReply->readAll();
     }
-    reply->deleteLater();
-    reply = 0;
+    m_fetchReply->deleteLater();
+    m_fetchReply = 0;
     emit fetchDone(title, content, error);
 }
 } // namespace CodePaster
diff --git a/src/plugins/cpaster/pastebindotcaprotocol.h b/src/plugins/cpaster/pastebindotcaprotocol.h
index b1d0c07bd0cf542d803b4845d2462b93c4d765cc..4cc766d4b016f665011523ce7fe7c3ebc80638d9 100644
--- a/src/plugins/cpaster/pastebindotcaprotocol.h
+++ b/src/plugins/cpaster/pastebindotcaprotocol.h
@@ -32,15 +32,14 @@
 
 #include "protocol.h"
 
-#include <QtNetwork/QNetworkAccessManager>
 #include <QtNetwork/QHttp>
 
 namespace CodePaster {
-class PasteBinDotCaProtocol : public Protocol
+class PasteBinDotCaProtocol : public NetworkProtocol
 {
     Q_OBJECT
 public:
-    PasteBinDotCaProtocol();
+    explicit PasteBinDotCaProtocol(const NetworkAccessManagerProxyPtr &nw);
     QString name() const { return QLatin1String("Pastebin.Ca"); }
 
     bool hasSettings() const { return false; }
@@ -58,12 +57,11 @@ public slots:
     void postRequestFinished(int id, bool error);
 
 private:
-    QNetworkAccessManager manager;
-    QNetworkReply *reply;
-    QString fetchId;
+    QNetworkReply *m_fetchReply;
+    QString m_fetchId;
 
-    QHttp http;
-    int postId;
+    QHttp m_http;
+    int m_postId;
 };
 
 } // namespace CodePaster
diff --git a/src/plugins/cpaster/pastebindotcomprotocol.cpp b/src/plugins/cpaster/pastebindotcomprotocol.cpp
index 5e6f8498cb8be1d7eed43b451f14c95cbb9528c9..eb8d631f3f56def9c27492c09d55cf1fd76f49da 100644
--- a/src/plugins/cpaster/pastebindotcomprotocol.cpp
+++ b/src/plugins/cpaster/pastebindotcomprotocol.cpp
@@ -38,6 +38,7 @@
 #include <QtCore/QTextStream>
 #include <QtCore/QXmlStreamReader>
 #include <QtCore/QXmlStreamAttributes>
+#include <QtCore/QByteArray>
 
 #include <QtNetwork/QNetworkReply>
 
@@ -47,7 +48,8 @@ static const char pastePhpScriptpC[] = "api_public.php";
 static const char fetchPhpScriptpC[] = "raw.php";
 
 namespace CodePaster {
-PasteBinDotComProtocol::PasteBinDotComProtocol() :
+PasteBinDotComProtocol::PasteBinDotComProtocol(const NetworkAccessManagerProxyPtr &nw) :
+    NetworkProtocol(nw),
     m_settings(new PasteBinDotComSettings),
     m_fetchReply(0),
     m_pasteReply(0),
@@ -105,31 +107,29 @@ void PasteBinDotComProtocol::paste(const QString &text,
     QTC_ASSERT(!m_pasteReply, return;)
 
     // Format body
-    m_pasteData = format(ct);
-    if (!m_pasteData.isEmpty())
-        m_pasteData.append('&');
-    m_pasteData += "paste_name=";
-    m_pasteData += QUrl::toPercentEncoding(username);
+    QByteArray pasteData = format(ct);
+    if (!pasteData.isEmpty())
+        pasteData.append('&');
+    pasteData += "paste_name=";
+    pasteData += QUrl::toPercentEncoding(username);
 
     const QString subDomain = m_settings->hostPrefix();
     if (!subDomain.isEmpty()) {
-        m_pasteData += "&paste_subdomain=";
-        m_pasteData += QUrl::toPercentEncoding(subDomain);
+        pasteData += "&paste_subdomain=";
+        pasteData += QUrl::toPercentEncoding(subDomain);
     }
 
-    m_pasteData += "&paste_code=";
-    m_pasteData += QUrl::toPercentEncoding(fixNewLines(text));
+    pasteData += "&paste_code=";
+    pasteData += QUrl::toPercentEncoding(fixNewLines(text));
 
     // fire request
     QString link;
     QTextStream(&link) << "http://" << hostName(false) << '/' << pastePhpScriptpC;
 
-    QUrl url(link);
-    QNetworkRequest r(url);
-    m_pasteReply = m_manager.post(r, m_pasteData);
+    m_pasteReply = httpPost(link, pasteData);
     connect(m_pasteReply, SIGNAL(finished()), this, SLOT(pasteFinished()));
     if (debug)
-        qDebug() << "paste: sending " << m_pasteReply << link << m_pasteData;
+        qDebug() << "paste: sending " << m_pasteReply << link << pasteData;
 }
 
 void PasteBinDotComProtocol::pasteFinished()
@@ -164,10 +164,8 @@ void PasteBinDotComProtocol::fetch(const QString &id)
 
     if (debug)
         qDebug() << "fetch: sending " << link;
-    QUrl url(link);
-    QNetworkRequest r(url);
 
-    m_fetchReply = m_manager.get(r);
+    m_fetchReply = httpGet(link);
     connect(m_fetchReply, SIGNAL(finished()), this, SLOT(fetchFinished()));
     m_fetchId = id;
 }
@@ -212,9 +210,7 @@ void PasteBinDotComProtocol::list()
     QTC_ASSERT(!m_listReply, return;)
 
     // fire request
-    QUrl url(QLatin1String("http://") + hostName(true));
-    QNetworkRequest r(url);
-    m_listReply = m_manager.get(r);
+    m_listReply = httpGet(QLatin1String("http://") + hostName(true));
     connect(m_listReply, SIGNAL(finished()), this, SLOT(listFinished()));
     if (debug)
         qDebug() << "list: sending " << m_listReply;
diff --git a/src/plugins/cpaster/pastebindotcomprotocol.h b/src/plugins/cpaster/pastebindotcomprotocol.h
index a7e2d30513726546294c22aac0fbf487527fd0f3..612fff7ac02f2dc6f0676f427850c510f3204dcc 100644
--- a/src/plugins/cpaster/pastebindotcomprotocol.h
+++ b/src/plugins/cpaster/pastebindotcomprotocol.h
@@ -32,19 +32,14 @@
 
 #include "protocol.h"
 
-#include <QtNetwork/QNetworkAccessManager>
-#include <QtNetwork/QHttp>
-
-#include <QtCore/QByteArray>
-
 namespace CodePaster {
 class PasteBinDotComSettings;
 
-class PasteBinDotComProtocol : public Protocol
+class PasteBinDotComProtocol : public NetworkProtocol
 {
     Q_OBJECT
 public:
-    PasteBinDotComProtocol();
+    explicit PasteBinDotComProtocol(const NetworkAccessManagerProxyPtr &nw);
 
     QString name() const { return QLatin1String("Pastebin.Com"); }
 
@@ -69,11 +64,9 @@ private:
     QString hostName(bool withSubDomain) const;
 
     PasteBinDotComSettings *m_settings;
-    QNetworkAccessManager m_manager;
     QNetworkReply *m_fetchReply;
     QNetworkReply *m_pasteReply;
     QNetworkReply *m_listReply;
-    QByteArray m_pasteData;
 
     QString m_fetchId;
     int m_postId;
diff --git a/src/plugins/cpaster/protocol.cpp b/src/plugins/cpaster/protocol.cpp
index be649f06775cded8a9655a1917ed7178ce477995..0f6e58a7e911ea0de2ef5a919194e0dc50a35641 100644
--- a/src/plugins/cpaster/protocol.cpp
+++ b/src/plugins/cpaster/protocol.cpp
@@ -31,6 +31,11 @@
 #include <cpptools/cpptoolsconstants.h>
 #include <qmljseditor/qmljseditorconstants.h>
 
+#include <QtNetwork/QNetworkAccessManager>
+#include <QtNetwork/QNetworkRequest>
+
+#include <QtCore/QUrl>
+
 namespace CodePaster {
 
 Protocol::Protocol()
@@ -108,4 +113,46 @@ QString Protocol::textFromHtml(QString data)
     data.replace(QLatin1String("&amp;"), QString(QLatin1Char('&')));
     return data;
 }
+
+// ------------ NetworkAccessManagerProxy
+NetworkAccessManagerProxy::NetworkAccessManagerProxy()
+{
+}
+
+NetworkAccessManagerProxy::~NetworkAccessManagerProxy()
+{
+}
+
+QNetworkReply *NetworkAccessManagerProxy::httpGet(const QString &link)
+{
+    QUrl url(link);
+    QNetworkRequest r(url);
+    return networkAccessManager()->get(r);
+}
+
+QNetworkReply *NetworkAccessManagerProxy::httpPost(const QString &link, const QByteArray &data)
+{
+    QUrl url(link);
+    QNetworkRequest r(url);
+    return networkAccessManager()->post(r, data);
+}
+
+QNetworkAccessManager *NetworkAccessManagerProxy::networkAccessManager()
+{
+    if (m_networkAccessManager.isNull())
+        m_networkAccessManager.reset(new QNetworkAccessManager);
+    return m_networkAccessManager.data();
+}
+
+// --------- NetworkProtocol
+
+NetworkProtocol::NetworkProtocol(const NetworkAccessManagerProxyPtr &nw) :
+    m_networkAccessManager(nw)
+{
+}
+
+NetworkProtocol::~NetworkProtocol()
+{
+}
+
 } //namespace CodePaster
diff --git a/src/plugins/cpaster/protocol.h b/src/plugins/cpaster/protocol.h
index 914a5748a4e58639c23d84bea87e4ff6ddd3d227..6ee95f9fdd61204b00b42e0df73b38b8d12e8289 100644
--- a/src/plugins/cpaster/protocol.h
+++ b/src/plugins/cpaster/protocol.h
@@ -31,6 +31,13 @@
 #define PROTOCOL_H
 
 #include <QtCore/QObject>
+#include <QtCore/QScopedPointer>
+#include <QtCore/QSharedPointer>
+
+QT_BEGIN_NAMESPACE
+class QNetworkAccessManager;
+class QNetworkReply;
+QT_END_NAMESPACE
 
 namespace Core {
     class IOptionsPage;
@@ -50,7 +57,7 @@ public:
         PostCommentCapability = 0x2,
         PostDescriptionCapability = 0x4
     };
-    Protocol();
+
     virtual ~Protocol();
 
     virtual QString name() const = 0;
@@ -82,9 +89,54 @@ signals:
     void listDone(const QString &name, const QStringList &result);
 
 protected:
+    Protocol();
     static QString textFromHtml(QString data);
     static QString fixNewLines(QString in);
+};
+
+/* Proxy for NetworkAccessManager that can be shared with
+ * delayed initialization and conveniences
+ * for HTTP-requests. */
+
+class NetworkAccessManagerProxy {
+    Q_DISABLE_COPY(NetworkAccessManagerProxy)
+public:
+    NetworkAccessManagerProxy();
+    ~NetworkAccessManagerProxy();
+
+    QNetworkReply *httpGet(const QString &url);
+    QNetworkReply *httpPost(const QString &link, const QByteArray &data);
+    QNetworkAccessManager *networkAccessManager();
+
+private:
+    QScopedPointer<QNetworkAccessManager> m_networkAccessManager;
+};
+
+/* Network-based protocol: Provides access with delayed
+ * initialization to a QNetworkAccessManager and conveniences
+ * for HTTP-requests. */
+
+class NetworkProtocol : public Protocol {
+    Q_OBJECT
+public:
+    virtual ~NetworkProtocol();
+
+protected:
+    typedef QSharedPointer<NetworkAccessManagerProxy> NetworkAccessManagerProxyPtr;
+
+    explicit NetworkProtocol(const NetworkAccessManagerProxyPtr &nw);
+
+    inline QNetworkReply *httpGet(const QString &url)
+    { return m_networkAccessManager->httpGet(url); }
+
+    inline QNetworkReply *httpPost(const QString &link, const QByteArray &data)
+    { return m_networkAccessManager->httpPost(link, data); }
+
+    inline QNetworkAccessManager *networkAccessManager()
+    { return m_networkAccessManager->networkAccessManager(); }
 
+private:
+    const NetworkAccessManagerProxyPtr m_networkAccessManager;
 };
 
 } //namespace CodePaster