Changeset 2


Ignore:
Timestamp:
02/03/10 22:06:42 (2 years ago)
Author:
roeland
Message:

Basic contact retrival works.

Location:
libQtGdata/trunk
Files:
6 added
5 edited

Legend:

Unmodified
Added
Removed
  • libQtGdata/trunk/QtGdata.pro

    r1 r2  
    77TARGET = QtGdata 
    88TEMPLATE = lib 
    9 VERSION = 0.0.1 
     9VERSION = 0.0.2 
    1010DEFINES += QTGDATA_LIBRARY 
    1111SOURCES += qtgdata.cpp \ 
    12     qtgdata_calendar.cpp 
     12    qtgdata_calendar.cpp \ 
     13    helper/syncnetworkaccessmanager.cpp \ 
     14    qtgdata_contacts.cpp 
    1315HEADERS += qtgdata.h \ 
    1416    QtGdata_global.h \ 
    15     qtgdata_calendar.h 
     17    qtgdata_calendar.h \ 
     18    helper/syncnetworkaccessmanager.h \ 
     19    qtgdata_contacts.h 
  • libQtGdata/trunk/qtgdata.cpp

    r1 r2  
    44#include <QStringList> 
    55 
    6 #include <QNetworkAccessManager> 
     6//#include <QNetworkAccessManager> 
     7#include "helper/syncnetworkaccessmanager.h" 
    78#include <QNetworkReply> 
    89 
    910#include <QDebug> 
    1011 
    11 QtGdata::QtGdata(const QString email, const QString password, 
    12                  const QString appString, 
    13                  const GDATA_ACCOUNT_TYPE type = GDATA_ACCOUNT_TYPE_HOSTED_OR_GOOGLE) 
     12/** 
     13 * Constructor 
     14 * 
     15 * @param email E-mail (account name) 
     16 * @param password Password for this account 
     17 * @param service String decribing the service to connect to 
     18 * @param accountType How to connect to google 
     19 * 
     20 */ 
     21QtGdata::QtGdata(const QString email, 
     22                 const QString password, 
     23                 const QString service, 
     24                 const QString loginURL, 
     25                 const GDATA_ACCOUNT_TYPE accountType) 
    1426{ 
    15   QNetworkAccessManager *manager = new QNetworkAccessManager(); 
     27  login(email, password, service, loginURL, accountType); 
     28} 
     29 
     30/** 
     31 * @param email E-mail (account name) 
     32 * @param password Password for this account 
     33 * @param service String describing the server you want to connect to 
     34 * @param accountType How to connect 
     35 * @param loginToken The captcha token 
     36 * @param loginCaptcha The text in the captcha (according to the user) 
     37 */ 
     38void QtGdata::login(const QString email, 
     39                    const QString password, 
     40                    const QString service, 
     41                    const QString loginURL, 
     42                    const GDATA_ACCOUNT_TYPE accountType, 
     43                    const QString loginToken, 
     44                    const QString loginCaptcha) 
     45{ 
     46  this->email = email; 
     47  this->password = password; 
     48 
     49  SyncNetworkAccessManager manager; 
    1650  QNetworkRequest request; 
    17   request.setUrl(QUrl("https://www.google.com/accounts/ClientLogin")); 
     51  request.setUrl(QUrl(loginURL)); 
    1852  request.setRawHeader("User-Agent", "QtGdata 0.0.1"); 
    1953  request.setRawHeader("Content-type", "application/x-www-form-urlencoded"); 
     
    2256  QString data = ""; 
    2357 
    24   switch(type) { 
     58  /* Request the right access */ 
     59  switch(accountType) { 
    2560    case QtGdata::GDATA_ACCOUNT_TYPE_GOOGLE: 
    2661      data = "accountType=GOOGLE"; 
     
    3671  data += "&Email=" + email; 
    3772  data += "&Passwd=" + password; 
    38   data += "&service=" + appString; 
     73  data += "&service=" + service; 
    3974  data += "&source=QtGdata-0.0.1"; 
    4075 
    41   connect(manager, SIGNAL(finished(QNetworkReply*)), 
    42          this, SLOT(finished(QNetworkReply*))); 
     76  /* Check for captcha stuff */ 
     77  if (!loginToken.isNull() && !loginCaptcha.isNull()) { 
     78    data += "&logintoken=" + loginToken; 
     79    data += "&logincaptcha=" + loginCaptcha; 
     80  } 
    4381 
    44   manager->post(request, data.toAscii()); 
    45 } 
    46  
    47  
    48 void QtGdata::finished(QNetworkReply *reply) 
    49 { 
     82  /* Get response */ 
     83  QNetworkReply *reply = manager.syncPost(request, data.toAscii()); 
    5084  int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); 
    5185 
     
    6498        } 
    6599      } 
    66       emit loginSucces(); 
     100      this->valid = 0; 
    67101      break; 
    68102    case 403: 
     
    70104      break; 
    71105    default: 
    72       qDebug() << reply->readAll(); 
    73106      break; 
    74107  } 
     108 
    75109} 
     110 
     111bool QtGdata::isValid() 
     112{ 
     113  return valid; 
     114} 
     115 
     116QByteArray QtGdata::getFeed(const QString url) 
     117{ 
     118  QNetworkRequest request; 
     119  request.setUrl(QUrl(url)); 
     120  request.setRawHeader("User-Agent", "QtGdata 0.0.1"); 
     121  request.setRawHeader("GData-Version", "2"); 
     122 
     123  QString authHeader = "GoogleLogin auth=" + Auth; 
     124  request.setRawHeader("Authorization", authHeader.toAscii()); 
     125 
     126  SyncNetworkAccessManager manager; 
     127  QNetworkReply * reply = manager.syncGet(request); 
     128 
     129  return reply->readAll(); 
     130} 
  • libQtGdata/trunk/qtgdata.h

    r1 r2  
    77#include <QNetworkReply> 
    88#include <QString> 
     9#include <QByteArray> 
    910 
    1011class QtGdata : public QObject 
     
    1920    }; 
    2021 
    21     QtGdata(const QString email, const QString password, const QString appString, const GDATA_ACCOUNT_TYPE); 
     22    enum GDATA_REQUEST { 
     23      GDATA_REQUEST_SUCCESS, 
     24      GDATA_REQUEST_AUTH_ERR 
     25    }; 
     26 
     27    bool isValid(); 
     28 
     29  protected: 
     30    QtGdata(const QString email, 
     31            const QString password, 
     32            const QString service, 
     33            const QString loginURL = "https://www.google.com/accounts/ClientLogin", 
     34            const GDATA_ACCOUNT_TYPE accountType = QtGdata::GDATA_ACCOUNT_TYPE_HOSTED_OR_GOOGLE); 
     35 
     36    QByteArray getFeed(const QString url); 
     37 
     38    QString email; 
     39    QString password; 
    2240 
    2341  private: 
     42      void login(const QString email, 
     43                 const QString password, 
     44                 const QString service, 
     45                 const QString loginURL = "https://www.google.com/accounts/ClientLogin", 
     46                 const GDATA_ACCOUNT_TYPE accountType = QtGdata::GDATA_ACCOUNT_TYPE_HOSTED_OR_GOOGLE, 
     47                 const QString loginToken = QString(), 
     48                 const QString loginCaptcha = QString()); 
     49 
    2450      QString SID; 
    2551      QString LSID; 
    2652      QString Auth; 
    2753 
    28   private slots: 
    29     void finished(QNetworkReply *reply); 
    30  
    31   signals: 
    32     void loginSucces(); 
    33     void loginFailed(); 
    34     void loginCaptcha(); 
     54      bool valid; 
    3555}; 
    3656 
  • libQtGdata/trunk/qtgdata_calendar.cpp

    r1 r2  
    44 
    55QtGdata_calendar::QtGdata_calendar(const QString username, const QString password) : 
    6 QtGdata(username, password, "cl", QtGdata::GDATA_ACCOUNT_TYPE_HOSTED_OR_GOOGLE) 
     6QtGdata(username, password, "cl") 
    77{ 
    88 
    99} 
     10 
     11QStringList QtGdata_calendar::getCalendars() 
     12{ 
     13 
     14} 
  • libQtGdata/trunk/qtgdata_calendar.h

    r1 r2  
    55 
    66#include <QString> 
     7#include <QStringList> 
    78 
    89class QtGdata_calendar : public QtGdata 
     
    1011public: 
    1112    QtGdata_calendar(const QString username, const QString password); 
     13 
     14    QStringList getCalendars(); 
    1215}; 
    1316 
Note: See TracChangeset for help on using the changeset viewer.