example/LastFmAuthApp/src/requestSP.cpp
author cgandhi
Mon, 11 Oct 2010 21:59:54 +0530
changeset 26 83d6a149c755
permissions -rw-r--r--
Submitting following changes - AuthApps for Last.fm and Twitter added API for checking ServiceAuthorization added for SMFCredMgrClient API added for forcefully removing credential details from SMFCredMgr Extra argument checks in SMfClient APIs APIs for service login and logout from SMFClient Redundant members removed from SmfServerSymbian DSM bug fixes Test Apps included
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
}