USA.
*/
+#include "parser.h"
+
#include <QtAlgorithms>
#include <QDebug>
-#include <QtGlobal>
-#include <QStringList>
-#include <QPixmap>
#include <QNetworkReply>
-#include "situareservice.h"
+#include <QPixmap>
+#include <QStringList>
+#include <QtGlobal>
+
+#include "error.h"
+#include "network/networkaccessmanager.h"
#include "situarecommon.h"
-#include "common.h"
-#include "parser.h"
#include "ui/avatarimage.h"
-#include "network/networkaccessmanager.h"
+
+#include "situareservice.h"
SituareService::SituareService(QObject *parent)
: QObject(parent),
m_friendsList.clear();
}
-void SituareService::fetchLocations()
+void SituareService::addProfileImages(const QList<QUrl> &imageUrlList)
{
qDebug() << __PRETTY_FUNCTION__;
- QString cookie = formCookie(API_KEY, m_credentials.expires(), m_credentials.userID(),
- m_credentials.sessionKey(), m_credentials.sessionSecret(),
- m_credentials.sig(), EN_LOCALE);
+ foreach(QUrl url, imageUrlList) {
+ emit fetchImage(url);
+ }
+}
- QUrl url = formUrl(SITUARE_URL, GET_LOCATIONS);
- sendRequest(url, COOKIE, cookie);
+void SituareService::appendAccessToken(QString &requestUrl)
+{
+ qWarning() << __PRETTY_FUNCTION__;
+
+// requestUrl.append("access_token=");
+ requestUrl.append(m_accessToken);
+
+// qWarning() << __PRETTY_FUNCTION__ << "request url with parameters and access token:" << requestUrl;
}
-void SituareService::reverseGeo(const GeoCoordinate &coordinates)
+void SituareService::buildRequest(const QString &script, const QHash<QString, QString> ¶meters)
+{
+ qWarning() << __PRETTY_FUNCTION__;
+
+ QString url = SITUARE_URL;
+ url.append(script);
+ url.append("?");
+
+ // append parameters
+ if (!parameters.isEmpty()) {
+ QHash<QString, QString>::const_iterator i = parameters.constBegin();
+ while (i != parameters.constEnd()) {
+ url.append(i.key());
+ url.append("=");
+ url.append(i.value());
+ url.append("&");
+ i++;
+ }
+ }
+
+// qWarning() << __PRETTY_FUNCTION__ << "request url with parameters:" << url;
+
+ if (!m_accessToken.isEmpty()) {
+ appendAccessToken(url);
+ sendRequest(url);
+ } else {
+ m_requestsWaitingAccessToken.append(url);
+ ///< @todo emit login request
+ }
+}
+
+void SituareService::clearUserData()
{
qDebug() << __PRETTY_FUNCTION__;
- QString cookie = formCookie(API_KEY, m_credentials.expires(),m_credentials.userID(),
- m_credentials.sessionKey(), m_credentials.sessionSecret(),
- m_credentials.sig(), EN_LOCALE);
+ qDeleteAll(m_friendsList.begin(), m_friendsList.end());
+ m_friendsList.clear();
- QString urlParameters = formUrlParameters(coordinates);
- urlParameters.append(JSON_FORMAT);
- QUrl url = formUrl(SITUARE_URL, REVERSE_GEO, urlParameters);
+ if(m_user) {
+ delete m_user;
+ m_user = 0;
+ }
+ emit userDataChanged(m_user, m_friendsList);
+}
- sendRequest(url, COOKIE, cookie);
+void SituareService::credentialsReady(const FacebookCredentials &credentials)
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ m_credentials = credentials;
}
-void SituareService::updateLocation(const GeoCoordinate &coordinates, const QString &status,
- const bool &publish)
+void SituareService::fetchLocations()
{
qDebug() << __PRETTY_FUNCTION__;
- QString urlParameters = formUrlParameters(coordinates, status, publish);
- QUrl url = formUrl(SITUARE_URL, UPDATE_LOCATION, urlParameters);
+// QString cookie = formCookie(API_KEY, m_credentials.expires(), m_credentials.userID(),
+// m_credentials.sessionKey(), m_credentials.sessionSecret(),
+// m_credentials.sig(), EN_LOCALE);
- QString cookie = formCookie(API_KEY, m_credentials.expires(), m_credentials.userID(),
- m_credentials.sessionKey(), m_credentials.sessionSecret(),
- m_credentials.sig(), EN_LOCALE);
+// QUrl url = formUrl(SITUARE_URL, GET_LOCATIONS);
+// sendRequest(url, COOKIE, cookie);
- sendRequest(url, COOKIE, cookie);
+ QHash<QString, QString> parameters;
+ parameters.insert("extra_user_data", NORMAL_SIZE_PROFILE_IMAGE);
+
+ buildRequest(GET_LOCATIONS, parameters);
}
QString SituareService::formCookie(const QString &apiKeyValue, QString expiresValue,
return parameters;
}
-void SituareService::sendRequest(const QUrl &url, const QString &cookieType, const QString &cookie)
-{
- qDebug() << __PRETTY_FUNCTION__;
-
- QNetworkRequest request;
-
- request.setUrl(url);
- request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, false);
- request.setRawHeader(cookieType.toAscii(), cookie.toUtf8());
-
- QNetworkReply *reply = m_networkManager->get(request, true);
-
- m_currentRequests.append(reply);
-}
-
-void SituareService::requestFinished(QNetworkReply *reply)
+void SituareService::imageReceived(const QUrl &url, const QPixmap &image)
{
qDebug() << __PRETTY_FUNCTION__;
+ qDebug() << "Image URL: " << url << " size :" << image.size();
- //Reply from situare
- if (m_currentRequests.contains(reply)) {
-
- qDebug() << "BytesAvailable: " << reply->bytesAvailable();
-
- if (reply->error()) {
- emit error(ErrorContext::NETWORK, reply->error());
- } else {
- QByteArray replyArray = reply->readAll();
- qDebug() << "Reply from: " << reply->url() << "reply " << replyArray;
-
- if(replyArray == ERROR_LAT.toAscii()) {
- qDebug() << "Error: " << ERROR_LAT;
- emit error(ErrorContext::SITUARE, SituareError::UPDATE_FAILED);
- } else if(replyArray == ERROR_LON.toAscii()) {
- qDebug() << "Error: " << ERROR_LON;
- emit error(ErrorContext::SITUARE, SituareError::UPDATE_FAILED);
- } else if(replyArray.contains(ERROR_SESSION.toAscii())) {
- qDebug() << "Error: " << ERROR_SESSION;
- emit error(ErrorContext::SITUARE, SituareError::SESSION_EXPIRED);
- } else if(replyArray.startsWith(OPENING_BRACE_MARK.toAscii())) {
- qDebug() << "JSON string";
- parseUserData(replyArray);
- } else if(replyArray.isEmpty()) {
- if(reply->url().toString().contains(UPDATE_LOCATION.toAscii())) {
- emit updateWasSuccessful();
- } else {
- // session credentials are invalid
- emit error(ErrorContext::SITUARE, SituareError::SESSION_EXPIRED);
- }
- } else {
- // unknown reply
- emit error(ErrorContext::SITUARE, SituareError::ERROR_GENERAL);
+ // assign facebook silhouette image to all who doesn't have a profile image
+ if(url == QUrl(SILHOUETTE_URL)) {
+ if(m_user->profileImageUrl().isEmpty()) {
+ m_user->setProfileImage(AvatarImage::create(image, AvatarImage::Large));
+ emit imageReady(m_user);
+ }
+ foreach(User *friendItem, m_friendsList) {
+ if(friendItem->profileImageUrl().isEmpty()) {
+ friendItem->setProfileImage(AvatarImage::create(image, AvatarImage::Small));
+ emit imageReady(friendItem);
}
}
- m_currentRequests.removeAll(reply);
- reply->deleteLater();
}
-}
-void SituareService::credentialsReady(const FacebookCredentials &credentials)
-{
- qDebug() << __PRETTY_FUNCTION__;
+ if (m_user->profileImageUrl() == url) {
+ m_user->setProfileImage(AvatarImage::create(image, AvatarImage::Large));
+ emit imageReady(m_user);
+ }
- m_credentials = credentials;
+ foreach(User *friendItem, m_friendsList) {
+ if(friendItem->profileImageUrl() == url) {
+ friendItem->setProfileImage(AvatarImage::create(image, AvatarImage::Small));
+ emit imageReady(friendItem);
+ }
+ }
}
void SituareService::parseUserData(const QByteArray &jsonReply)
}
}
-void SituareService::imageReceived(const QUrl &url, const QPixmap &image)
+void SituareService::requestFinished(QNetworkReply *reply)
{
qDebug() << __PRETTY_FUNCTION__;
- qDebug() << "Image URL: " << url << " size :" << image.size();
- // assign facebook silhouette image to all who doesn't have a profile image
- if(url == QUrl(SILHOUETTE_URL)) {
- if(m_user->profileImageUrl().isEmpty()) {
- m_user->setProfileImage(AvatarImage::create(image, AvatarImage::Large));
- emit imageReady(m_user);
- }
- foreach(User *friendItem, m_friendsList) {
- if(friendItem->profileImageUrl().isEmpty()) {
- friendItem->setProfileImage(AvatarImage::create(image, AvatarImage::Small));
- emit imageReady(friendItem);
+ //Reply from situare
+ if (m_currentRequests.contains(reply)) {
+
+ qDebug() << "BytesAvailable: " << reply->bytesAvailable();
+
+ if (reply->error()) {
+ emit error(ErrorContext::NETWORK, reply->error());
+ } else {
+ QByteArray replyArray = reply->readAll();
+ qDebug() << "Reply from: " << reply->url() << "reply " << replyArray;
+
+ if(replyArray == ERROR_LAT.toAscii()) {
+ qDebug() << "Error: " << ERROR_LAT;
+ emit error(ErrorContext::SITUARE, SituareError::UPDATE_FAILED);
+ } else if(replyArray == ERROR_LON.toAscii()) {
+ qDebug() << "Error: " << ERROR_LON;
+ emit error(ErrorContext::SITUARE, SituareError::UPDATE_FAILED);
+ } else if(replyArray.contains(ERROR_SESSION.toAscii())) {
+ qDebug() << "Error: " << ERROR_SESSION;
+ emit error(ErrorContext::SITUARE, SituareError::SESSION_EXPIRED);
+ } else if(replyArray.startsWith(OPENING_BRACE_MARK.toAscii())) {
+ qDebug() << "JSON string";
+ parseUserData(replyArray);
+ } else if(replyArray.isEmpty()) {
+ if(reply->url().toString().contains(UPDATE_LOCATION.toAscii())) {
+ emit updateWasSuccessful();
+ } else {
+ // session credentials are invalid
+ emit error(ErrorContext::SITUARE, SituareError::SESSION_EXPIRED);
+ }
+ } else {
+ // unknown reply
+ emit error(ErrorContext::SITUARE, SituareError::ERROR_GENERAL);
}
}
+ m_currentRequests.removeAll(reply);
+ reply->deleteLater();
}
+}
- if (m_user->profileImageUrl() == url) {
- m_user->setProfileImage(AvatarImage::create(image, AvatarImage::Large));
- emit imageReady(m_user);
- }
+void SituareService::reverseGeo(const GeoCoordinate &coordinates)
+{
+ qDebug() << __PRETTY_FUNCTION__;
- foreach(User *friendItem, m_friendsList) {
- if(friendItem->profileImageUrl() == url) {
- friendItem->setProfileImage(AvatarImage::create(image, AvatarImage::Small));
- emit imageReady(friendItem);
- }
- }
+ QString cookie = formCookie(API_KEY, m_credentials.expires(),m_credentials.userID(),
+ m_credentials.sessionKey(), m_credentials.sessionSecret(),
+ m_credentials.sig(), EN_LOCALE);
+
+ QString urlParameters = formUrlParameters(coordinates);
+ urlParameters.append(JSON_FORMAT);
+ QUrl url = formUrl(SITUARE_URL, REVERSE_GEO, urlParameters);
+
+ sendRequest(url, COOKIE, cookie);
}
-void SituareService::addProfileImages(const QList<QUrl> &imageUrlList)
+void SituareService::sendRequest(const QUrl &url, const QString &cookieType, const QString &cookie)
{
qDebug() << __PRETTY_FUNCTION__;
- foreach(QUrl url, imageUrlList) {
- emit fetchImage(url);
+ QNetworkRequest request;
+
+ request.setUrl(url);
+ request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, false);
+ request.setRawHeader(cookieType.toAscii(), cookie.toUtf8());
+
+ QNetworkReply *reply = m_networkManager->get(request, true);
+
+ m_currentRequests.append(reply);
+}
+
+void SituareService::sendRequest(const QString &requestUrl)
+{
+ qWarning() << __PRETTY_FUNCTION__ << requestUrl;
+
+ // make and send the request
+ QNetworkRequest request;
+ request.setUrl(QUrl(requestUrl));
+ request.setAttribute(QNetworkRequest::CacheSaveControlAttribute, false);
+ QNetworkReply *reply = m_networkManager->get(request, true);
+ m_currentRequests.append(reply);
+}
+
+void SituareService::updateAccessToken(const QString &accessToken)
+{
+ qWarning() << __PRETTY_FUNCTION__;
+
+ m_accessToken = accessToken;
+
+ foreach (QString request, m_requestsWaitingAccessToken) {
+ appendAccessToken(request);
+ sendRequest(request);
}
+
+ m_requestsWaitingAccessToken.clear();
}
-void SituareService::clearUserData()
+void SituareService::updateLocation(const GeoCoordinate &coordinates, const QString &status,
+ const bool &publish)
{
qDebug() << __PRETTY_FUNCTION__;
- qDeleteAll(m_friendsList.begin(), m_friendsList.end());
- m_friendsList.clear();
+ QString urlParameters = formUrlParameters(coordinates, status, publish);
+ QUrl url = formUrl(SITUARE_URL, UPDATE_LOCATION, urlParameters);
- if(m_user) {
- delete m_user;
- m_user = 0;
- }
- emit userDataChanged(m_user, m_friendsList);
+ QString cookie = formCookie(API_KEY, m_credentials.expires(), m_credentials.userID(),
+ m_credentials.sessionKey(), m_credentials.sessionSecret(),
+ m_credentials.sig(), EN_LOCALE);
+
+ sendRequest(url, COOKIE, cookie);
}