aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2014-12-25 12:55:06 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-12-25 10:40:09 -0800
commit3d3eac7cc72d9466464b59c66fb1b5162b789879 (patch)
tree39502b54ee95ae2b6067781fa66b9af69888c456 /qt-ui
parent83fd196c4ad15274c4499b4ef94e30398f00bfce (diff)
downloadsubsurface-3d3eac7cc72d9466464b59c66fb1b5162b789879.tar.gz
Send an experimental file to the experimental album on Facebook
And I had to create the Http header by hand because I couldn't figure out how to do using HttpMultiPart from Qt. not fun. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/divelistview.cpp2
-rw-r--r--qt-ui/socialnetworks.cpp44
-rw-r--r--qt-ui/socialnetworks.h1
3 files changed, 47 insertions, 0 deletions
diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp
index 83d78c4c2..cbbf35152 100644
--- a/qt-ui/divelistview.cpp
+++ b/qt-ui/divelistview.cpp
@@ -27,6 +27,7 @@
#include <QFileDialog>
#include <string>
#include <iostream>
+#include <QHttpMultiPart>
#include "socialnetworks.h"
#include "../qthelper.h"
@@ -844,6 +845,7 @@ void DiveListView::contextMenuEvent(QContextMenuEvent *event)
void DiveListView::publishFacebook()
{
FacebookManager *fb = FacebookManager::instance();
+ fb->sendDive(1);
}
void DiveListView::shiftTimes()
diff --git a/qt-ui/socialnetworks.cpp b/qt-ui/socialnetworks.cpp
index 76a85566d..f9d5acf54 100644
--- a/qt-ui/socialnetworks.cpp
+++ b/qt-ui/socialnetworks.cpp
@@ -8,7 +8,9 @@
#include <QNetworkAccessManager>
#include <QUrlQuery>
#include <QEventLoop>
+#include <QHttpMultiPart>
#include <QSettings>
+#include <QFile>
#include <QDebug>
#include "pref.h"
@@ -180,3 +182,45 @@ void FacebookManager::setDesiredAlbumName(const QString& a)
{
albumName = a;
}
+
+/*
+
+
+*/
+
+void FacebookManager::sendDive(int divenr)
+{
+
+ QUrl url("https://graph.facebook.com/v2.2/" + QString(prefs.facebook.album_id) + "/photos?" +
+ "&access_token=" + QString(prefs.facebook.access_token) +
+ "&source=image");
+
+
+ QNetworkAccessManager *am = new QNetworkAccessManager(this);
+ QFile file("subsurfaceuploadtest.png");
+ file.open(QIODevice::ReadOnly);
+ QNetworkRequest request(url);
+
+ QString bound="margin";
+
+ //according to rfc 1867 we need to put this string here:
+ QByteArray data(QString("--" + bound + "\r\n").toLocal8Bit());
+ data.append("Content-Disposition: form-data; name=\"action\"\r\n\r\n");
+ data.append("https://graph.facebook.com/v2.2/\r\n");
+ data.append("--" + bound + "\r\n"); //according to rfc 1867
+ data.append("Content-Disposition: form-data; name=\"uploaded\"; filename=\"subsurfaceuploadtest.png\"\r\n"); //name of the input is "uploaded" in my form, next one is a file name.
+ data.append("Content-Type: image/jpeg\r\n\r\n"); //data type
+ data.append(file.readAll()); //let's read the file
+ data.append("\r\n");
+ data.append("--" + bound + "--\r\n"); //closing boundary according to rfc 1867
+
+ request.setRawHeader(QString("Content-Type").toLocal8Bit(),QString("multipart/form-data; boundary=" + bound).toLocal8Bit());
+ request.setRawHeader(QString("Content-Length").toLocal8Bit(), QString::number(data.length()).toLocal8Bit());
+ QNetworkReply *reply = am->post(request,data);
+
+ QEventLoop loop;
+ connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
+ loop.exec();
+
+ qDebug() << reply->readAll();
+}
diff --git a/qt-ui/socialnetworks.h b/qt-ui/socialnetworks.h
index ed7804afa..8c474c906 100644
--- a/qt-ui/socialnetworks.h
+++ b/qt-ui/socialnetworks.h
@@ -22,6 +22,7 @@ public slots:
void tryLogin(const QUrl& loginResponse);
void logout();
void setDesiredAlbumName(const QString& albumName);
+ void sendDive(int divenr);
private:
explicit FacebookManager(QObject *parent = 0);