example/LastFmAuthApp/src/requestSP.cpp
author cgandhi
Tue, 12 Oct 2010 15:23:52 +0530
changeset 27 b3e1347ac96a
parent 26 83d6a149c755
permissions -rw-r--r--
Updating the information for test applications and results.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     1
/**
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     2
* Copyright (c) 2010 Sasken Communication Technologies Ltd.
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     3
* All rights reserved.
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     4
* This component and the accompanying materials are made available
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     5
* under the terms of the "{License}"
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     6
* which accompanies  this distribution, and is available
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     7
* at the URL "{LicenseUrl}".
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     8
*
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
     9
* Initial Contributors:
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    10
* Narasimhulu Kavadapu, Sasken Communication Technologies Ltd - Initial contribution
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    11
*
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    12
* Contributors:
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    13
* Siddhartha Chandra, Sasken Communication Technologies Ltd
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    14
* Description:
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    15
* class to handle calls to rest Server API's
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    16
*/
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    17
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    18
#define EMULATORTESTING 1
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    19
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    20
#include "requestSP.h"
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    21
#include "sessionSP.h"
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    22
#include "xmlParser.h"
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    23
#include "errorCodes.h"
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    24
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    25
#include <QNetworkRequest>
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    26
#include <QXmlSimpleReader>
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    27
#include <QXmlInputSource>
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    28
#include <QCryptographicHash>
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    29
#include <QtAlgorithms>
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    30
#include <QDebug>
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    31
#include <qnetworkproxy.h>
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    32
#include "keys.h"
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    33
///////////////////////////////////////////////////////////////////////////////////////////////////
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    34
// global
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    35
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    36
static const QString kAPIVersion = "1.0";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    37
static const QString kAPIFormat = "XML";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    38
static const QString kStringBoundary = "3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    39
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    40
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    41
///////////////////////////////////////////////////////////////////////////////////////////////////
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    42
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    43
static bool caseInsensitiveLessThan(const QString &s1, const QString &s2)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    44
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    45
    return s1.toLower() < s2.toLower();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    46
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    47
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    48
///////////////////////////////////////////////////////////////////////////////////////////////////
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    49
// Static class functions
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    50
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    51
FBRequest* FBRequest::request()
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    52
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    53
    return FBRequest::requestWithSession(FBSession::session());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    54
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    55
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    56
FBRequest* FBRequest::requestWithSession (FBSession* aSession)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    57
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    58
    FBRequest* request = new FBRequest(aSession);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    59
    return request;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    60
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    61
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    62
///////////////////////////////////////////////////////////////////////////////////////////////////
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    63
// instance public functions
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    64
FBRequest::FBRequest(FBSession* aSession) : iSession ( aSession ), iNetworkAccessManager ( this )
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    65
{}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    66
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    67
const QDateTime& FBRequest::timeStamp() const
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    68
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    69
    return iTimestamp;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    70
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    71
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    72
void FBRequest::connect()
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    73
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    74
	qDebug()<<"Inside FBRequest::connect";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    75
    QString url ;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    76
    url = generateGetURL();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    77
    qDebug() << "Complete URL  : " << url;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    78
    QNetworkRequest request;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    79
    request.setUrl(QUrl(url));
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    80
    if (iMethod.length())
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    81
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    82
        pbar = new progressbar;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    83
        pbar->show();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    84
		#ifdef __WINSCW__
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    85
			proxysettings();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    86
		#endif
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    87
        QNetworkReply* reply = iNetworkAccessManager.get(request);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    88
        QObject::connect(reply, SIGNAL(finished()),  this, SLOT(networkReplyFinished()));
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    89
        QObject::connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    90
                         this, SLOT(networkReplyError(QNetworkReply::NetworkError)));
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    91
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    92
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    93
void FBRequest::proxysettings()
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    94
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    95
#ifdef EMULATORTESTING
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    96
	qDebug()<<"proxysettings";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    97
	
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    98
	// Reading the keys, CSM Stubbed - START
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
    99
	QFile file("c://data//DoNotShare.txt");
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   100
	if (!file.open(QIODevice::ReadOnly))
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   101
		{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   102
		qDebug()<<"File to read the windows username and password could not be opened, returning!!!";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   103
		return;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   104
		}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   105
	
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   106
	QByteArray arr = file.readAll();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   107
	QList<QByteArray> list = arr.split(' ');
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   108
	file.close();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   109
	
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   110
	QString username(list[0]);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   111
	QString password(list[1]);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   112
	
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   113
    QString httpProxy = "10.1.0.214";//ipwproxy.sasken.com
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   114
    QString httpPort = "3128";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   115
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   116
    QString httpUser =username;/* This could be taken thru an QDialog implmentation to remove the Hard coding */
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   117
    QString httpPass =password;/* This could be taken thru an QDialog implmentation to remove the Hard coding */
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   118
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   119
    /*==Classes used from Network Module==*/
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   120
    QNetworkProxy proxy;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   121
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   122
    proxy.setType(QNetworkProxy::HttpProxy);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   123
    proxy.setHostName(httpProxy);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   124
    proxy.setPort(httpPort.toInt());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   125
    proxy.setUser(httpUser);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   126
    proxy.setPassword(httpPass);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   127
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   128
    QNetworkProxy::setApplicationProxy(proxy);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   129
#endif
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   130
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   131
///////////////////////////////////////////////////////////////////////////////////////////////////
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   132
// instance private functions
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   133
QString FBRequest::md5(const QString& aData)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   134
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   135
    QByteArray byteArray;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   136
    byteArray.insert(0, aData.toUtf8());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   137
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   138
    QByteArray md5Hash = QCryptographicHash::hash(byteArray,QCryptographicHash::Md5 ).toHex();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   139
    QString returnString ( md5Hash );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   140
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   141
    return returnString;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   142
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   143
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   144
bool FBRequest::isSpecialMethod() const {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   145
    return ( iMethod.compare("facebook.auth.getSession", Qt::CaseInsensitive) == 0
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   146
             ||   iMethod.compare("facebook.auth.createToken", Qt::CaseInsensitive) == 0 );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   147
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   148
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   149
QString FBRequest::urlForMethod (const QString& aMethod) const {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   150
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   151
	Q_UNUSED(aMethod)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   152
	return iSession->apiURL();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   153
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   154
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   155
QString FBRequest::generateGetURL() const
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   156
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   157
    const QUrl url(iUrl);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   158
    const QString queryPrefix = url.hasQuery() ? "&" : "?";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   159
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   160
    QStringList pairs;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   161
    DictionaryIterator i(iParams);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   162
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   163
    while (i.hasNext()) {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   164
        i.next();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   165
        pairs << i.key().toUtf8() + "=" + i.value().toUtf8();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   166
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   167
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   168
    return iUrl + queryPrefix + pairs.join("&");
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   169
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   170
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   171
QString FBRequest::generateCallId() const {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   172
    QDateTime dateTime = QDateTime::currentDateTime();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   173
    uint secs = dateTime.toTime_t();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   174
    QString result = QString::number(secs, 10);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   175
    return result;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   176
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   177
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   178
QString FBRequest::generateSig(Dictionary Params)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   179
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   180
    QString joined;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   181
    QStringList keys = Params.keys();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   182
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   183
    qSort(keys.begin(), keys.end(), caseInsensitiveLessThan);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   184
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   185
    QListIterator<QString> i(keys);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   186
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   187
    joined.append(iSession->apiSecret().toUtf8());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   188
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   189
    while (i.hasNext())
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   190
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   191
        const QString key = i.next();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   192
        joined.append(key.toUtf8());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   193
        //joined.append("=");
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   194
        joined.append(Params.value(key).toUtf8());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   195
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   196
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   197
    return md5(joined);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   198
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   199
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   200
void FBRequest::generatePostBody( QByteArray& body )
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   201
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   202
    QString endLine = "\r\n--" + kStringBoundary + "\r\n";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   203
    body.append( "--" + kStringBoundary.toUtf8() + "\r\n" ) ;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   204
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   205
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   206
    DictionaryIterator i (iParams);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   207
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   208
    while (i.hasNext())
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   209
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   210
        i.next();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   211
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   212
        body.append("Content-Disposition: form-data; name=\"" + i.key().toUtf8() + "\"\r\n\r\n" );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   213
        body.append(i.value().toUtf8());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   214
        body.append(endLine.toUtf8());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   215
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   216
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   217
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   218
    if (iDataParam.size())
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   219
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   220
        if (iDataParamPicture)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   221
        {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   222
            body.append("Content-Disposition: form-data; filename=\"photo\"\r\n" );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   223
            body.append("Content-Type: image/png\r\n\r\n" );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   224
        }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   225
        else
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   226
        {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   227
            body.append("Content-Disposition: form-data; filename=\"data\"\r\n");
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   228
            body.append("Content-Type: content/unknown\r\n\r\n");
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   229
        }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   230
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   231
        body.append(iDataParam);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   232
        body.append(endLine.toUtf8());
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   233
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   234
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   235
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   236
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   237
void FBRequest::handleResponseData( const QByteArray& aResponseData )
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   238
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   239
	qDebug()<<"Inside FBRequest::handleResponseData";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   240
    FBError error;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   241
    QVariant result =  parseXMLResponse( aResponseData, error);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   242
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   243
    qDebug() << "parsed result : " << result;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   244
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   245
    if (error.code() != 0)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   246
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   247
        emit requestFailedWithFlickrError(error);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   248
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   249
    else
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   250
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   251
		emit requestDidLoad(result);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   252
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   253
    delete pbar;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   254
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   255
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   256
void FBRequest::post( const QString& aUrl, const Dictionary& aParams)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   257
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   258
    iUrl = aUrl;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   259
    iParams = aParams;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   260
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   261
    iSession->send(this);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   262
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   263
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   264
void FBRequest::cancel()
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   265
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   266
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   267
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   268
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   269
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   270
void FBRequest::call (const QString& aMethod, const Dictionary& aParams)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   271
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   272
	qDebug()<<"Inside FBRequest::call";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   273
    QByteArray dataParams;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   274
    callWithDataParams(aMethod, aParams, dataParams, false);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   275
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   276
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   277
void FBRequest::callforToken ()
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   278
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   279
	
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   280
	iUrl = iSession->apiURL();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   281
	iMethod = "auth.getSession";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   282
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   283
	Dictionary params;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   284
	params["method"] = iMethod;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   285
	params["api_key"] = iSession->apiKey();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   286
	params["token"] = iSession->apiToken();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   287
	QString qstr = "api_key" + iSession->apiKey() + "methodauth.getSessiontoken" + iSession->apiToken() + iSession->apiSecret();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   288
	qDebug()<<"Api Key"<<iSession->apiKey(); 
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   289
	qDebug()<<"Api Token"<<iSession->apiToken(); 
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   290
	qDebug()<<"Api Secret"<<iSession->apiSecret(); 
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   291
	qDebug()<<"qstr - sig"<<qstr<<"\n";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   292
	params["api_sig"] = md5(qstr);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   293
	
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   294
	iParams = params;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   295
	
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   296
	iSession->send(this);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   297
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   298
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   299
void FBRequest::callWithDataParams (const QString& aMethod, const Dictionary& aParams, const QByteArray& aDataParam, bool aDataParamPicture)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   300
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   301
	qDebug()<<"Inside FBRequest::callWithDataParams";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   302
    iUrl = urlForMethod(aMethod);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   303
    iMethod = aMethod;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   304
    iParams = aParams;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   305
    iDataParam = aDataParam;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   306
    iDataParamPicture = aDataParamPicture;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   307
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   308
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   309
    iParams["method"] = iMethod;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   310
    iParams["api_key"] = iSession->apiKey();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   311
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   312
    // XXX: workaround what seems to be a Qt bug with the extras-devel libraries.
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   313
    QString signature = generateSig(iParams);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   314
    iParams["api_sig"] = signature;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   315
    // XXX: end workaround.
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   316
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   317
    iSession->send(this);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   318
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   319
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   320
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   321
QVariant FBRequest::parseXMLResponse ( const QByteArray& aResponseData, FBError& aError)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   322
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   323
	qDebug()<<"Inside FBRequest::parseXMLResponse";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   324
    QXmlInputSource input;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   325
    input.setData(aResponseData);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   326
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   327
    FBXMLHandler handler;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   328
    QXmlSimpleReader parser;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   329
    parser.setContentHandler(&handler);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   330
    bool result = parser.parse(&input);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   331
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   332
    QVariant rootObject = handler.rootObject();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   333
    
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   334
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   335
    if (handler.parseError() || !result)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   336
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   337
        aError.setCode( FBRESPONSE_PARSE_ERROR );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   338
        aError.setDescription("parser was unable to parse the xml response from facebook server.");
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   339
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   340
        return QVariant();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   341
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   342
    else if (handler.rootName().compare("error_response")==0)
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   343
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   344
        QVariantHash errorDict =  rootObject.toHash();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   345
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   346
        bool result;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   347
        int errorCode = errorDict.value("error_code").toInt(&result);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   348
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   349
        aError.setCode( errorCode );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   350
        aError.setDescription( errorDict.value("error_msg").toString() );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   351
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   352
        return rootObject;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   353
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   354
    else
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   355
    {
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   356
        return rootObject;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   357
    }
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   358
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   359
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   360
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   361
///////////////////////////////////////////////////////////////////////////////////////////////////
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   362
// instance provate slots
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   363
void FBRequest::networkReplyError ( QNetworkReply::NetworkError aCode )
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   364
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   365
    emit requestFailedWithNetworkError(aCode );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   366
}
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   367
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   368
void FBRequest::networkReplyFinished ()
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   369
{
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   370
	qDebug()<<"Inside FBRequest::networkReplyFinished";
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   371
    QNetworkReply* reply = static_cast<QNetworkReply*> ( sender() );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   372
    QByteArray responseData = reply->readAll();
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   373
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   374
    qDebug() << "Response Data(QByteArray) : " << responseData;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   375
    QString str(responseData);
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   376
    qDebug() << "Response Data(QString) : " << str;
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   377
    handleResponseData ( responseData );
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   378
83d6a149c755 Submitting following changes -
cgandhi
parents:
diff changeset
   379
}