Copyright (C) 2010 Ixonos Plc. Authors:
Henri Lampela - henri.lampela@ixonos.com
+ Sami Rämö - sami.ramo@ixonos.com
Situare is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
#define SITUARESERVICE_H
#include <QObject>
-#include "../facebookservice/facebookcredentials.h"
+
#include "../user/user.h"
#include "imagefetcher.h"
-class QNetworkAccessManager;
+class NetworkAccessManager;
class QNetworkReply;
class QNetworkRequest;
-class QPointF;
+class GeoCoordinate;
class QUrl;
/**
* @brief SituareService class for communicating with Situare server
*
* @author Henri Lampela
-* @class SituareService situareservice.h "situareservice/situareservice.h"
+* @author Sami Rämö - sami.ramo (at) ixonos.com
*/
class SituareService : public QObject
{
*
* @param coordinates coordinates to be translated
*/
- void reverseGeo(const QPointF &coordinates);
+ void reverseGeo(const GeoCoordinate &coordinates);
/**
* @brief Updates location to the Situare server
*
* @param coordinates current cordinates
* @param status message
- * @param publish publish location on Facebook wall (true/false)
+ * @param publish publish location on Facebook wall
*/
- void updateLocation(const QPointF &coordinates, const QString &status, const bool &publish);
+ void updateLocation(const GeoCoordinate &coordinates, const QString &status, const bool &publish);
public slots:
void clearUserData();
/**
- * @brief Public slot, which indicates when facebook credentials are ready
- *
- * @param credentials New credentials
- */
- void credentialsReady(const FacebookCredentials &credentials);
-
- /**
* @brief Public slot, which indicates when http request has been completed
*
* @param reply storage for http reply
*/
void requestFinished(QNetworkReply *reply);
+ /**
+ * @brief Update session data
+ *
+ * @param session New session data
+ */
+ void updateSession(const QString &session);
+
private:
/**
* @brief Requests ImageFetcher if user/friend has a profile image
* uses members: m_user and m_friendsList
*
+ * @param imageUrlList list of image urls
*/
- void addProfileImages();
+ void addProfileImages(const QList<QUrl> &imageUrlList);
/**
- * @brief Forms a http cookie
- *
- * @param apiKeyValue application key
- * @param expiresValue session expire date&time from Facebook
- * @param userValue user id from Facebook
- * @param sessionKeyValue session key from Facebook
- * @param sessionSecretValue session secret from Facebook
- * @param signatureValue md5 generated signature
- * @param localeValue used locale
- * @return QString formed cookie
- */
- QString formCookie(const QString &apiKeyValue, QString expiresValue, QString userValue,
- QString sessionKeyValue, QString sessionSecretValue,
- const QString &signatureValue, const QString &localeValue);
-
- /**
- * @brief Forms a http url
- *
- * @param baseUrl Server url
- * @param phpScript Server script
- * @param urlParameters optional parameters for url
- * @return QUrl formed url
- */
- QUrl formUrl(const QString &baseUrl, const QString &phpScript,
- QString urlParameters = QString());
+ * @brief Append access_token and other session data to the reques url
+ *
+ * @param[in,out] requestUrl Request URL with other request parameters and ending to &
+ */
+ void appendAccessToken(QString &requestUrl);
/**
- * @brief Forms url parameters
- *
- * @param coordinates current coordinates
- * @param status optional status message
- * @param publish optional publish location on Facebook wall (true/false)
- * @return QString
- */
- QString formUrlParameters(const QPointF &coordinates, QString status = QString(),
- QString publish = QString());
+ * @brief Convert coordinate value in degrees (double) to string with enough precision
+ *
+ * @param degrees Coordinate value in degrees
+ * @returns Coordinate value as string
+ */
+ QString degreesToString(double degrees);
/**
* @brief Parses user and friend data from JSON string
void parseUserData(const QByteArray &jsonReply);
/**
- * @brief Sends http request
- *
- * @param url destination
- * @param cookieType type of the cookie
- * @param cookie http cookie
- */
- void sendRequest(const QUrl &url, const QString &cookieType, const QString &cookie);
+ * @brief Build and send request
+ *
+ * Appends script pathname and parameters to the server base URL. Access token is appended and
+ * the request sent if the access token is available, otherwise the request is queued.
+ *
+ * @param script Requested script pathname
+ * @param parameters Hash containing parameter key/value pairs.
+ */
+ void buildRequest(const QString &script, const QHash<QString,QString> ¶meters);
-private slots:
+ /**
+ * @brief Send request
+ *
+ * @param requestUrl Request URL containing also all parameters
+ */
+ void sendRequest(const QString &requestUrl);
+private slots:
/**
* @brief Slot for received images
*
/**
* @brief Signals error
*
- * @param error error message
+ * @param context error context
+ * @param error error code
*/
- void error(const QString &error);
+ void error(const int context, const int error);
/**
* @brief Signal for image fetching
void fetchImage(const QUrl &url);
/**
- * @brief Signals when credentials are invalid
+ * @brief Signals when user's/friend's image is downloaded
*
+ * @param user Instance of user/friend
*/
- void invalidSessionCredentials();
+ void imageReady(User *user);
/**
* @brief Signals when address data is retrieved
******************************************************************************/
private:
-
- int m_nbrOfImages; ///< Indicates number of friends whose images has been downloaded
- int m_visited; ///< Indicates number of friends with images
-
bool m_defaultImage; ///< Indicates if some of the friends/user doesn't have a image
- QList<QNetworkReply *> m_currentRequests; ///< List of current http requests
- QList<User *> m_friendsList; ///< List of friends(User)
+ QList<QNetworkReply *> m_currentRequests; ///< List of current http requests
+ QList<User *> m_friendsList; ///< List of friends(User)
+
+ QString m_session; ///< Session data
- QNetworkAccessManager *m_networkManager; ///< Pointer to QNetworkAccessManager
+ NetworkAccessManager *m_networkManager; ///< Pointer to QNetworkAccessManager
- FacebookCredentials m_credentials; ///< handle for FacebookCredentials
ImageFetcher *m_imageFetcher; ///< Instance of the image fetcher
User *m_user; ///< Pointer to User
-
-
-
};
#endif // SITUARESERVICE_H