summaryrefslogtreecommitdiff
path: root/protocols/FacebookRM/src
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/FacebookRM/src')
-rw-r--r--protocols/FacebookRM/src/client.h3
-rw-r--r--protocols/FacebookRM/src/communication.cpp111
-rw-r--r--protocols/FacebookRM/src/contacts.cpp15
-rw-r--r--protocols/FacebookRM/src/db.h9
-rw-r--r--protocols/FacebookRM/src/entities.h3
-rw-r--r--protocols/FacebookRM/src/http.h82
-rw-r--r--protocols/FacebookRM/src/json.cpp10
-rw-r--r--protocols/FacebookRM/src/messages.cpp1
-rw-r--r--protocols/FacebookRM/src/process.cpp47
9 files changed, 108 insertions, 173 deletions
diff --git a/protocols/FacebookRM/src/client.h b/protocols/FacebookRM/src/client.h
index 41a8b6a1d0..57a503d748 100644
--- a/protocols/FacebookRM/src/client.h
+++ b/protocols/FacebookRM/src/client.h
@@ -111,8 +111,6 @@ public:
unsigned int error_count_;
- bool validate_response(http::response *resp, bool notify = true);
-
bool handle_entry(std::string method);
bool handle_success(std::string method);
bool handle_error(std::string method, int force_disconnect = 0);
@@ -174,6 +172,7 @@ public:
DWORD choose_security_level(RequestType);
int choose_method(RequestType);
+ bool notify_errors(RequestType);
std::string choose_proto(RequestType);
std::string choose_server(RequestType, std::string* data = NULL, std::string* get_data = NULL);
std::string choose_action(RequestType, std::string* data = NULL, std::string* get_data = NULL);
diff --git a/protocols/FacebookRM/src/communication.cpp b/protocols/FacebookRM/src/communication.cpp
index f7c56feb70..6e908c5505 100644
--- a/protocols/FacebookRM/src/communication.cpp
+++ b/protocols/FacebookRM/src/communication.cpp
@@ -108,82 +108,48 @@ http::response facebook_client::flap(RequestType request_type, std::string* requ
} else {
parent->Log("!!!!! No response from server (time-out)");
resp.code = HTTP_CODE_FAKE_DISCONNECTED;
- // Better to have something set explicitely as this value
- // is compaired in all communication requests
+ // Better to have something set explicitely as this value is compaired in all communication requests
}
- if (parent->getByte(FACEBOOK_KEY_VALIDATE_RESPONSE, 0) == 1)
- validate_response(&resp);
-
- return resp;
-}
-
-bool facebook_client::validate_response(http::response* resp, bool notify)
-{
- if (resp->code == HTTP_CODE_FAKE_DISCONNECTED)
- {
- parent->Log(" ! ! Request has timed out, connection or server error");
- return false;
- }
-
- if (parent->getByte(FACEBOOK_KEY_VALIDATE_RESPONSE, 0) == 2) {
- return true;
- }
-
-/*
- // TODO: Is this from jarvis? Or me? Add it?
- std::string cookie = utils::text::source_get_value(&resp->data, 2, "setCookie(\\\"", ");");
- if (!cookie.empty()) {
- std::string cookie_name = utils::text::source_get_value(&cookie, 1, "\\\"");
- std::string cookie_value = utils::text::source_get_value(&cookie, 3, "\\\"", "\\\"", "\\\"");
-
- parent->Log(" New cookie from response '%s': %s", cookie_name.c_str(), cookie_value.c_str());
- this->cookies[cookie_name] = cookie_value;
- }
-*/
- std::string::size_type pos = resp->data.find("\"error\":");
- if (pos != std::string::npos) {
- try
- {
+ // Get Facebook's error message
+ if (resp.code == HTTP_CODE_OK) {
+ std::string::size_type pos = resp.data.find("\"error\":");
+ if (pos != std::string::npos) {
pos += 8;
- int error_num = atoi(resp->data.substr(pos, resp->data.find(",", pos) - pos).c_str());
+ int error_num = atoi(resp.data.substr(pos, resp.data.find(",", pos) - pos).c_str());
if (error_num != 0) {
std::string error = "";
- pos = resp->data.find("\"errorDescription\":\"", pos);
+
+ pos = resp.data.find("\"errorDescription\":\"", pos);
if (pos != std::string::npos) {
pos += 20;
- error = resp->data.substr(pos, resp->data.find("\"", pos) - pos);
+ error = resp.data.substr(pos, resp.data.find("\"", pos) - pos);
error = utils::text::trim(utils::text::special_expressions_decode(utils::text::slashu_to_utf8(error)));
error = ptrA( mir_utf8decodeA(error.c_str()));
}
std::string title = "";
- pos = resp->data.find("\"errorSummary\":\"", pos);
+ pos = resp.data.find("\"errorSummary\":\"", pos);
if (pos != std::string::npos) {
pos += 16;
- title = resp->data.substr(pos, resp->data.find("\"", pos) - pos);
+ title = resp.data.substr(pos, resp.data.find("\"", pos) - pos);
title = utils::text::trim(utils::text::special_expressions_decode(utils::text::slashu_to_utf8(title)));
title = ptrA( mir_utf8decodeA(title.c_str()));
}
- resp->error_number = error_num;
- resp->error_text = error;
- resp->error_title = title;
- resp->code = HTTP_CODE_FAKE_ERROR;
+ resp.error_number = error_num;
+ resp.error_text = error;
+ resp.error_title = title;
+ resp.code = HTTP_CODE_FAKE_ERROR;
parent->Log(" ! ! Received Facebook error: %d -- %s", error_num, error.c_str());
- if (notify)
+ if (notify_errors(request_type))
client_notify(_A2T(error.c_str()));
-
- return false;
}
- } catch (const std::exception &e) {
- parent->Log(" @ @ validate_response: Exception: %s",e.what());
- return false;
}
}
- return true;
+ return resp;
}
bool facebook_client::handle_entry(std::string method)
@@ -564,6 +530,21 @@ std::string facebook_client::choose_action(RequestType request_type, std::string
}
}
+bool facebook_client::notify_errors(RequestType request_type)
+{
+ switch (request_type)
+ {
+ case REQUEST_BUDDY_LIST:
+ case REQUEST_MESSAGE_SEND2:
+ case REQUEST_MESSAGE_SEND:
+ case REQUEST_ASYNC:
+ return false;
+
+ default:
+ return true;
+ }
+}
+
NETLIBHTTPHEADER* facebook_client::get_request_headers(int request_type, int* headers_count)
{
if (request_type == REQUEST_POST)
@@ -715,9 +696,6 @@ bool facebook_client::login(const char *username, const char *password)
// Send validation
http::response resp = flap(REQUEST_LOGIN, &data);
- // Process result data
- validate_response(&resp);
-
// Save Device ID
if (cookies["datr"].length())
parent->setString(FACEBOOK_KEY_DEVICE_ID, cookies["datr"].c_str());
@@ -782,7 +760,6 @@ bool facebook_client::login(const char *username, const char *password)
inner_data += "&fb_dtsg=" + utils::text::source_get_value(&resp.data, 3, "name=\"fb_dtsg\"", "value=\"", "\"");
resp = flap(REQUEST_SETUP_MACHINE, &inner_data);
- validate_response(&resp);
}
}
@@ -884,9 +861,6 @@ bool facebook_client::home()
resp = flap(REQUEST_HOME);
- // Process result data
- validate_response(&resp);
-
switch (resp.code)
{
case HTTP_CODE_OK:
@@ -942,9 +916,6 @@ bool facebook_client::reconnect()
// Request reconnect
http::response resp = flap(REQUEST_RECONNECT);
- // Process result data
- validate_response(&resp);
-
switch (resp.code)
{
case HTTP_CODE_OK:
@@ -990,9 +961,6 @@ bool facebook_client::buddy_list()
// Get buddy list
http::response resp = flap(REQUEST_BUDDY_LIST, &data);
- // Process result data
- validate_response(&resp);
-
switch (resp.code) {
case HTTP_CODE_OK:
parent->ForkThread(&FacebookProto::ProcessBuddyList, new std::string(resp.data));
@@ -1012,9 +980,6 @@ bool facebook_client::load_friends()
// Get buddy list
http::response resp = flap(REQUEST_LOAD_FRIENDS);
- // Process result data
- validate_response(&resp);
-
switch (resp.code) {
case HTTP_CODE_OK:
parent->ForkThread(&FacebookProto::ProcessFriendList, new std::string(resp.data));
@@ -1034,9 +999,6 @@ bool facebook_client::feeds()
// Get feeds
http::response resp = flap(REQUEST_FEEDS);
- // Process result data
- validate_response(&resp);
-
switch (resp.code) {
case HTTP_CODE_OK:
if (resp.data.find("\"num_stories\":0") == std::string::npos)
@@ -1061,9 +1023,6 @@ bool facebook_client::load_pages()
// Get feeds
http::response resp = flap(REQUEST_PAGES);
- // Process result data
- validate_response(&resp);
-
switch (resp.code) {
case HTTP_CODE_OK:
{
@@ -1112,9 +1071,6 @@ bool facebook_client::channel()
// Get update
http::response resp = flap(REQUEST_MESSAGES_RECEIVE);
- // Process result data
- validate_response(&resp);
-
if (resp.code != HTTP_CODE_OK)
{
// Something went wrong
@@ -1263,7 +1219,6 @@ bool facebook_client::send_message(std::string message_recipient, std::string me
}
}
- validate_response(&resp, false);
*error_text = resp.error_text;
switch (resp.error_number)
@@ -1380,7 +1335,7 @@ bool facebook_client::post_status(status_data *status)
flap(REQUEST_IDENTITY_SWITCH, &data);
}
- if (validate_response(&resp) && resp.code == HTTP_CODE_OK) {
+ if (resp.isValid()) {
parent->NotifyEvent(parent->m_tszUserName, TranslateT("Status update was successful."), NULL, FACEBOOK_EVENT_OTHER);
return handle_success("post_status");
}
diff --git a/protocols/FacebookRM/src/contacts.cpp b/protocols/FacebookRM/src/contacts.cpp
index 28b2b25d79..0ba4986f1a 100644
--- a/protocols/FacebookRM/src/contacts.cpp
+++ b/protocols/FacebookRM/src/contacts.cpp
@@ -197,9 +197,6 @@ void FacebookProto::DeleteContactFromServer(void *data)
// Get unread inbox threads
http::response resp = facy.flap(REQUEST_DELETE_FRIEND, &query, &get_query);
- // Process result data
- facy.validate_response(&resp);
-
if (resp.data.find("\"payload\":null", 0) != std::string::npos)
{
facebook_user* fbu = facy.buddies.find(id);
@@ -242,9 +239,6 @@ void FacebookProto::AddContactToServer(void *data)
// Get unread inbox threads
http::response resp = facy.flap(REQUEST_REQUEST_FRIEND, &query);
- // Process result data
- facy.validate_response(&resp);
-
if (resp.data.find("\"success\":true", 0) != std::string::npos) {
HANDLE hContact = ContactIDToHContact(id);
@@ -281,9 +275,6 @@ void FacebookProto::ApproveContactToServer(void *data)
http::response resp = facy.flap(REQUEST_APPROVE_FRIEND, &post_data, &get_data);
- // Process result data
- facy.validate_response(&resp);
-
setByte(hContact, FACEBOOK_KEY_CONTACT_TYPE, CONTACT_FRIEND);
}
@@ -307,9 +298,6 @@ void FacebookProto::CancelFriendsRequest(void *data)
// Get unread inbox threads
http::response resp = facy.flap(REQUEST_CANCEL_REQUEST, &query);
- // Process result data
- facy.validate_response(&resp);
-
if (resp.data.find("\"payload\":null", 0) != std::string::npos)
{
setByte(hContact, FACEBOOK_KEY_CONTACT_TYPE, CONTACT_NONE);
@@ -339,9 +327,6 @@ void FacebookProto::SendPokeWorker(void *p)
// Send poke
http::response resp = facy.flap(REQUEST_POKE, &data);
- // Process result data
- facy.validate_response(&resp);
-
if (resp.data.find("\"payload\":null", 0) != std::string::npos) {
std::string message = utils::text::source_get_value(&resp.data, 3, "__html\":\"", "\\/button>", "\"}");
diff --git a/protocols/FacebookRM/src/db.h b/protocols/FacebookRM/src/db.h
index d009139627..65538d2f16 100644
--- a/protocols/FacebookRM/src/db.h
+++ b/protocols/FacebookRM/src/db.h
@@ -55,11 +55,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define FACEBOOK_KEY_LAST_WALL "LastWall"
#define FACEBOOK_KEY_LOAD_PAGES "LoadPages"
-#define FACEBOOK_KEY_POLL_RATE "PollRate" // [HIDDEN]
-#define FACEBOOK_KEY_TIMEOUTS_LIMIT "TimeoutsLimit" // [HIDDEN]
-#define FACEBOOK_KEY_DISABLE_LOGOUT "DisableLogout" // [HIDDEN]
-#define FACEBOOK_KEY_VALIDATE_RESPONSE "ValidateResponse" // [HIDDEN] - 0 = standard, 1 = always, 2 = never
-#define FACEBOOK_KEY_LOCALE "Locale" // [HIDDEN] - en_US, cs_CZ, etc.
+#define FACEBOOK_KEY_POLL_RATE "PollRate" // [HIDDEN]
+#define FACEBOOK_KEY_TIMEOUTS_LIMIT "TimeoutsLimit" // [HIDDEN]
+#define FACEBOOK_KEY_DISABLE_LOGOUT "DisableLogout" // [HIDDEN]
+#define FACEBOOK_KEY_LOCALE "Locale" // [HIDDEN] - en_US, cs_CZ, etc.
#define FACEBOOK_KEY_LOCAL_TIMESTAMP_UNREAD "UseLocalTimestampUnread" // [HIDDEN] - 1 = use local timestamp for offline messages
#define FACEBOOK_KEY_EVENT_NOTIFICATIONS_ENABLE "EventNotificationsEnable"
diff --git a/protocols/FacebookRM/src/entities.h b/protocols/FacebookRM/src/entities.h
index 4ad4612985..d18a939e7b 100644
--- a/protocols/FacebookRM/src/entities.h
+++ b/protocols/FacebookRM/src/entities.h
@@ -80,12 +80,14 @@ struct facebook_message
DWORD time;
bool isIncoming;
bool isUnread;
+ bool isChat;
facebook_message()
{
this->user_id = this->message_text = this->sender_name = this->message_id = "";
this->time = 0;
this->isUnread = this->isIncoming = true;
+ this->isChat = false;
}
facebook_message(const facebook_message& msg)
@@ -97,6 +99,7 @@ struct facebook_message
this->time = msg.time;
this->isIncoming = msg.isIncoming;
this->isUnread = msg.isUnread;
+ this->isChat = msg.isChat;
}
};
diff --git a/protocols/FacebookRM/src/http.h b/protocols/FacebookRM/src/http.h
index 69dc4dc9c7..507658bff9 100644
--- a/protocols/FacebookRM/src/http.h
+++ b/protocols/FacebookRM/src/http.h
@@ -25,37 +25,37 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define HTTP_PROTO_REGULAR "http://"
#define HTTP_PROTO_SECURE "https://"
-#define HTTP_CODE_CONTINUE 100
+#define HTTP_CODE_CONTINUE 100
#define HTTP_CODE_SWITCHING_PROTOCOLS 101
-#define HTTP_CODE_PROCESSING 102
-#define HTTP_CODE_OK 200
-#define HTTP_CODE_CREATED 201
-#define HTTP_CODE_ACCEPTED 202
+#define HTTP_CODE_PROCESSING 102
+#define HTTP_CODE_OK 200
+#define HTTP_CODE_CREATED 201
+#define HTTP_CODE_ACCEPTED 202
#define HTTP_CODE_NON_AUTHORITATIVE_INFORMATION 203
-#define HTTP_CODE_NO_CONTENT 204
-#define HTTP_CODE_RESET_CONTENT 205
-#define HTTP_CODE_PARTIAL_CONTENT 206
-#define HTTP_CODE_MULTI_STATUS 207
-#define HTTP_CODE_MULTIPLE_CHOICES 300
-#define HTTP_CODE_MOVED_PERMANENTLY 301
-#define HTTP_CODE_FOUND 302
-#define HTTP_CODE_SEE_OTHER 303
-#define HTTP_CODE_NOT_MODIFIED 304
-#define HTTP_CODE_USE_PROXY 305
-#define HTTP_CODE_SWITCH_PROXY 306
+#define HTTP_CODE_NO_CONTENT 204
+#define HTTP_CODE_RESET_CONTENT 205
+#define HTTP_CODE_PARTIAL_CONTENT 206
+#define HTTP_CODE_MULTI_STATUS 207
+#define HTTP_CODE_MULTIPLE_CHOICES 300
+#define HTTP_CODE_MOVED_PERMANENTLY 301
+#define HTTP_CODE_FOUND 302
+#define HTTP_CODE_SEE_OTHER 303
+#define HTTP_CODE_NOT_MODIFIED 304
+#define HTTP_CODE_USE_PROXY 305
+#define HTTP_CODE_SWITCH_PROXY 306
#define HTTP_CODE_TEMPORARY_REDIRECT 307
-#define HTTP_CODE_BAD_REQUEST 400
-#define HTTP_CODE_UNAUTHORIZED 401
-#define HTTP_CODE_PAYMENT_REQUIRED 402
-#define HTTP_CODE_FORBIDDEN 403
-#define HTTP_CODE_NOT_FOUND 404
+#define HTTP_CODE_BAD_REQUEST 400
+#define HTTP_CODE_UNAUTHORIZED 401
+#define HTTP_CODE_PAYMENT_REQUIRED 402
+#define HTTP_CODE_FORBIDDEN 403
+#define HTTP_CODE_NOT_FOUND 404
#define HTTP_CODE_METHOD_NOT_ALLOWED 405
-#define HTTP_CODE_NOT_ACCEPTABLE 406
+#define HTTP_CODE_NOT_ACCEPTABLE 406
#define HTTP_CODE_PROXY_AUTHENTICATION_REQUIRED 407
-#define HTTP_CODE_REQUEST_TIMEOUT 408
-#define HTTP_CODE_CONFLICT 409
-#define HTTP_CODE_GONE 410
-#define HTTP_CODE_LENGTH_REQUIRED 411
+#define HTTP_CODE_REQUEST_TIMEOUT 408
+#define HTTP_CODE_CONFLICT 409
+#define HTTP_CODE_GONE 410
+#define HTTP_CODE_LENGTH_REQUIRED 411
#define HTTP_CODE_PRECONDITION_REQUIRED 412
#define HTTP_CODE_REQUEST_ENTITY_TOO_LARGE 413
#define HTTP_CODE_REQUEST_URI_TOO_LONG 414
@@ -63,24 +63,24 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define HTTP_CODE_REQUESTED_RANGE_NOT_SATISFIABLE 416
#define HTTP_CODE_EXPECTATION_FAILED 417
#define HTTP_CODE_UNPROCESSABLE_ENTITY 422
-#define HTTP_CODE_LOCKED 423
-#define HTTP_CODE_FAILED_DEPENDENCY 424
+#define HTTP_CODE_LOCKED 423
+#define HTTP_CODE_FAILED_DEPENDENCY 424
#define HTTP_CODE_UNORDERED_COLLECTION 425
-#define HTTP_CODE_UPGRADE_REQUIRED 426
-#define HTTP_CODE_RETRY_WITH 449
+#define HTTP_CODE_UPGRADE_REQUIRED 426
+#define HTTP_CODE_RETRY_WITH 449
#define HTTP_CODE_INTERNAL_SERVER_ERROR 500
-#define HTTP_CODE_NOT_IMPLEMENTED 501
-#define HTTP_CODE_BAD_GATEWAY 502
+#define HTTP_CODE_NOT_IMPLEMENTED 501
+#define HTTP_CODE_BAD_GATEWAY 502
#define HTTP_CODE_SERVICE_UNAVAILABLE 503
-#define HTTP_CODE_GATEWAY_TIMEOUT 504
+#define HTTP_CODE_GATEWAY_TIMEOUT 504
#define HTTP_CODE_HTTP_VERSION_NOT_SUPPORTED 505
#define HTTP_CODE_VARIANT_ALSO_NEGOTIATES 506
#define HTTP_CODE_INSUFFICIENT_STORAGE 507
#define HTTP_CODE_BANDWIDTH_LIMIT_EXCEEDED 509
-#define HTTP_CODE_NOT_EXTENDED 510
+#define HTTP_CODE_NOT_EXTENDED 510
-#define HTTP_CODE_FAKE_DISCONNECTED 0
-#define HTTP_CODE_FAKE_ERROR 1
+#define HTTP_CODE_FAKE_DISCONNECTED 0
+#define HTTP_CODE_FAKE_ERROR 1
namespace http
{
@@ -94,10 +94,16 @@ namespace http
{
response() : code(0), error_number(0) {}
int code;
+ std::map< std::string, std::string > headers;
+ std::string data;
+
+ // Facebook's error data
unsigned int error_number;
std::string error_text;
std::string error_title;
- std::map< std::string, std::string > headers;
- std::string data;
+
+ bool isValid() {
+ return (code == HTTP_CODE_OK && error_number == 0);
+ }
};
}
diff --git a/protocols/FacebookRM/src/json.cpp b/protocols/FacebookRM/src/json.cpp
index 529dd8abd1..df43cf9466 100644
--- a/protocols/FacebookRM/src/json.cpp
+++ b/protocols/FacebookRM/src/json.cpp
@@ -84,7 +84,7 @@ int facebook_json_parser::parse_buddy_list(void* data, List::List< facebook_user
}
}
- // Find now awailable contacts
+ // Find now available contacts
JSONNODE *nowAvailable = json_get(list, "nowAvailableList");
if (nowAvailable != NULL) {
for (unsigned int i = 0; i < json_size(nowAvailable); i++) {
@@ -295,7 +295,7 @@ void parseAttachments(FacebookProto *proto, std::string *message_text, JSONNODE
if (!message_text->empty())
*message_text += "\n\n";
- // we can use this as offline messages doesn't have it
+ // we can't use this as offline messages doesn't have it
/* JSONNODE *admin_snippet = json_get(it, "admin_snippet");
if (admin_snippet != NULL) {
*message_text += json_as_pstring(admin_snippet);
@@ -435,8 +435,6 @@ int facebook_json_parser::parse_messages(void* data, std::vector< facebook_messa
resp = proto->facy.flap(REQUEST_USER_INFO, NULL, &search);
}
- proto->facy.validate_response(&resp);
-
if (resp.code == HTTP_CODE_OK) {
std::string about = utils::text::source_get_value(&resp.data, 2, "<div class=\"timeline", "<div id=\"footer");
@@ -542,8 +540,8 @@ int facebook_json_parser::parse_messages(void* data, std::vector< facebook_messa
}
std::string senderName = json_as_string(sender_name);
- std::string::size_type pos;
- /*if ((pos = senderName.find(" ")) != std::string::npos) {
+ /*std::string::size_type pos;
+ if ((pos = senderName.find(" ")) != std::string::npos) {
senderName = senderName.substr(0, pos);
}*/
diff --git a/protocols/FacebookRM/src/messages.cpp b/protocols/FacebookRM/src/messages.cpp
index 5a7dc086ae..8ca7a8c2c1 100644
--- a/protocols/FacebookRM/src/messages.cpp
+++ b/protocols/FacebookRM/src/messages.cpp
@@ -90,7 +90,6 @@ void FacebookProto::SendChatMsgWorker(void *p)
post_data += "&phstamp=0";
http::response resp = facy.flap(REQUEST_THREAD_INFO, &post_data);
- facy.validate_response(&resp);
tid = utils::text::source_get_value(&resp.data, 2, "\"thread_id\":\"", "\"");
setString(hContact, FACEBOOK_KEY_TID, tid.c_str());
diff --git a/protocols/FacebookRM/src/process.cpp b/protocols/FacebookRM/src/process.cpp
index 74180a8358..af9726db2f 100644
--- a/protocols/FacebookRM/src/process.cpp
+++ b/protocols/FacebookRM/src/process.cpp
@@ -278,7 +278,6 @@ void FacebookProto::ProcessUnreadMessages(void*)
data += "&__a=1&__dyn=&__req=&ttstamp=0";
http::response resp = facy.flap(REQUEST_UNREAD_THREADS, &data);
- facy.validate_response(&resp);
if (resp.code == HTTP_CODE_OK) {
@@ -343,7 +342,6 @@ void FacebookProto::ProcessUnreadMessage(void *p)
}
resp = facy.flap(REQUEST_THREAD_INFO, &data);
- facy.validate_response(&resp);
if (resp.code == HTTP_CODE_OK) {
@@ -371,22 +369,26 @@ void FacebookProto::ProcessUnreadMessage(void *p)
ParseSmileys(messages[i]->message_text, hContact);
- if (messages[i]->isIncoming) {
- PROTORECVEVENT recv = {0};
- recv.flags = PREF_UTF;
- recv.szMessage = const_cast<char*>(messages[i]->message_text.c_str());
- recv.timestamp = local_timestamp || !messages[i]->time ? ::time(NULL) : messages[i]->time;
- ProtoChainRecvMsg(hContact, &recv);
+ if (messages[i]->isChat) {
+
} else {
- DBEVENTINFO dbei = {0};
- dbei.cbSize = sizeof(dbei);
- dbei.eventType = EVENTTYPE_MESSAGE;
- dbei.flags = DBEF_SENT | DBEF_UTF;
- dbei.szModule = m_szModuleName;
- dbei.timestamp = local_timestamp || !messages[i]->time ? ::time(NULL) : messages[i]->time;
- dbei.cbBlob = (DWORD)messages[i]->message_text.length() + 1;
- dbei.pBlob = (PBYTE)messages[i]->message_text.c_str();
- db_event_add(hContact, &dbei);
+ if (messages[i]->isIncoming) {
+ PROTORECVEVENT recv = {0};
+ recv.flags = PREF_UTF;
+ recv.szMessage = const_cast<char*>(messages[i]->message_text.c_str());
+ recv.timestamp = local_timestamp || !messages[i]->time ? ::time(NULL) : messages[i]->time;
+ ProtoChainRecvMsg(hContact, &recv);
+ } else {
+ DBEVENTINFO dbei = {0};
+ dbei.cbSize = sizeof(dbei);
+ dbei.eventType = EVENTTYPE_MESSAGE;
+ dbei.flags = DBEF_SENT | DBEF_UTF;
+ dbei.szModule = m_szModuleName;
+ dbei.timestamp = local_timestamp || !messages[i]->time ? ::time(NULL) : messages[i]->time;
+ dbei.cbBlob = (DWORD)messages[i]->message_text.length() + 1;
+ dbei.pBlob = (PBYTE)messages[i]->message_text.c_str();
+ db_event_add(hContact, &dbei);
+ }
}
}
delete messages[i];
@@ -510,9 +512,6 @@ void FacebookProto::ProcessNotifications(void*)
// Get notifications
http::response resp = facy.flap(REQUEST_NOTIFICATIONS);
- // Process result data
- facy.validate_response(&resp);
-
if (resp.code != HTTP_CODE_OK) {
facy.handle_error("notifications");
return;
@@ -556,9 +555,6 @@ void FacebookProto::ProcessFriendRequests(void*)
// Get notifications
http::response resp = facy.flap(REQUEST_LOAD_REQUESTS);
- // Process result data
- facy.validate_response(&resp);
-
if (resp.code != HTTP_CODE_OK) {
facy.handle_error("friendRequests");
return;
@@ -763,9 +759,6 @@ void FacebookProto::SearchAckThread(void *targ)
http::response resp = facy.flap(REQUEST_SEARCH, NULL, &get_data);
- // Process result data
- facy.validate_response(&resp);
-
if (resp.code == HTTP_CODE_OK)
{
std::string items = utils::text::source_get_value(&resp.data, 2, "<body", "</body>");
@@ -848,8 +841,6 @@ void FacebookProto::SearchIdAckThread(void *targ)
resp = facy.flap(REQUEST_USER_INFO, NULL, &search);
}
- facy.validate_response(&resp);
-
if (resp.code == HTTP_CODE_OK)
{
std::string about = utils::text::source_get_value(&resp.data, 2, "<div class=\"timeline", "<div id=\"footer");