summaryrefslogtreecommitdiff
path: root/protocols/FacebookRM/src/process.cpp
diff options
context:
space:
mode:
authorRobert Pösel <robyer@seznam.cz>2016-05-17 20:15:33 +0000
committerRobert Pösel <robyer@seznam.cz>2016-05-17 20:15:33 +0000
commit5e5cabbee2c2249be4e34efc9bafa1b05136111a (patch)
tree5705bd162306f31b1d41dc2b1d48ae53ca4046d4 /protocols/FacebookRM/src/process.cpp
parent82cd0bd751e964a84746740abd03a419b8b80532 (diff)
Facebook: Rework loading online contacts (not properly finished!); version bump
This is work in progress, which might (and will) cause wrong status reporting and maybe related problems. On the other hand this way is only "preferred" way. Previous way (using buddy_list request) isn't used anymore and might cause the captcha problems and antivirus checks from FB... git-svn-id: http://svn.miranda-ng.org/main/trunk@16843 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/FacebookRM/src/process.cpp')
-rw-r--r--protocols/FacebookRM/src/process.cpp133
1 files changed, 6 insertions, 127 deletions
diff --git a/protocols/FacebookRM/src/process.cpp b/protocols/FacebookRM/src/process.cpp
index d9d52b0b38..313c365dc8 100644
--- a/protocols/FacebookRM/src/process.cpp
+++ b/protocols/FacebookRM/src/process.cpp
@@ -38,129 +38,8 @@ std::string getContactName(FacebookProto *proto, MCONTACT hContact, const char *
return name;
}
-void FacebookProto::ProcessBuddyList(void*)
-{
- ScopedLock s(facy.buddies_lock_);
-
- if (isOffline())
- return;
-
- facy.handle_entry("ProcessBuddyList");
-
- std::string data = "user=" + facy.self_.user_id;
-
- data += "&cached_user_info_ids=";
- int counter = 0;
- for (List::Item< facebook_user >* i = facy.buddies.begin(); i != NULL; i = i->next, counter++) {
- data += i->data->user_id + "%2C";
- }
-
- if (getByte(FACEBOOK_KEY_FETCH_MOBILE, 0) == 1)
- data += "&fetch_mobile=true";
- // data += "&additional_buddies[0]=" + some_user_id; // FIXME: I'm not sure what this is for
- // data += "&additional_buddies[1]=" + some_user_id;
- data += "&get_now_available_list=true";
-
- data += "&__user=" + facy.self_.user_id;
- data += "&__dyn=" + facy.__dyn();
- data += "&__req=" + facy.__req();
- data += "&fb_dtsg=" + facy.dtsg_;
- data += "&ttstamp=" + facy.ttstamp_;
- data += "&__rev=" + facy.__rev();
-
- // Get buddy list
- http::response resp = facy.flap(REQUEST_BUDDY_LIST, &data); // NOTE: Request revised 1.9.2015
-
- if (resp.code != HTTP_CODE_OK) {
- facy.handle_error("buddy_list");
- return;
- }
-
- debugLogA("*** Starting processing buddy list");
-
- CODE_BLOCK_TRY
-
- facebook_json_parser* p = new facebook_json_parser(this);
- p->parse_buddy_list(&resp.data, &facy.buddies);
- delete p;
-
- for (List::Item< facebook_user >* i = facy.buddies.begin(); i != NULL;)
- {
- facebook_user* fbu = i->data;
-
- if (!fbu->deleted) {
- if (!fbu->handle) // just been added
- fbu->handle = AddToContactList(fbu, CONTACT_FRIEND);
-
- ptrT client(getTStringA(fbu->handle, "MirVer"));
- if (!client || mir_tstrcmp(client, fbu->getMirVer()))
- setTString(fbu->handle, "MirVer", fbu->getMirVer());
-
- if (getDword(fbu->handle, "IdleTS", 0) != fbu->last_active) {
- if ((fbu->idle || fbu->status_id == ID_STATUS_OFFLINE) && fbu->last_active > 0)
- setDword(fbu->handle, "IdleTS", fbu->last_active);
- else
- delSetting(fbu->handle, "IdleTS");
- }
- }
-
- if (fbu->status_id == ID_STATUS_OFFLINE || fbu->deleted) {
- if (fbu->handle)
- setWord(fbu->handle, "Status", ID_STATUS_OFFLINE);
-
- std::string to_delete(i->key);
- i = i->next;
- facy.buddies.erase(to_delete);
- } else {
- i = i->next;
-
- if (!fbu->handle) // just been added
- fbu->handle = AddToContactList(fbu, CONTACT_FRIEND);
-
- if (getWord(fbu->handle, "Status", 0) != (int)fbu->status_id)
- setWord(fbu->handle, "Status", fbu->status_id);
-
- if (getDword(fbu->handle, "LastActiveTS", 0) != fbu->last_active) {
- if (fbu->last_active > 0)
- setDword(fbu->handle, "LastActiveTS", fbu->last_active);
- else
- delSetting(fbu->handle, "LastActiveTS");
- }
-
- if (getByte(fbu->handle, FACEBOOK_KEY_CONTACT_TYPE, 0) != CONTACT_FRIEND) {
- setByte(fbu->handle, FACEBOOK_KEY_CONTACT_TYPE, CONTACT_FRIEND);
- // TODO: remove that popup and use "Contact added you" event?
- }
-
- // Wasn't contact removed from "server-list" someday?
- if (getDword(fbu->handle, FACEBOOK_KEY_DELETED, 0)) {
- delSetting(fbu->handle, FACEBOOK_KEY_DELETED);
-
- std::string url = FACEBOOK_URL_PROFILE + fbu->user_id;
- std::string contactname = getContactName(this, fbu->handle, !fbu->real_name.empty() ? fbu->real_name.c_str() : fbu->user_id.c_str());
-
- ptrT szTitle(mir_utf8decodeT(contactname.c_str()));
- NotifyEvent(szTitle, TranslateT("Contact is back on server-list."), fbu->handle, FACEBOOK_EVENT_FRIENDSHIP, &url);
- }
-
- // Check avatar change
- CheckAvatarChange(fbu->handle, fbu->image_url);
- }
- }
-
- debugLogA("*** Buddy list processed");
-
- CODE_BLOCK_CATCH
-
- debugLogA("*** Error processing buddy list: %s", e.what());
-
- CODE_BLOCK_END
-}
-
void FacebookProto::ProcessFriendList(void*)
{
- ScopedLock s(facy.buddies_lock_);
-
if (isOffline())
return;
@@ -1017,15 +896,15 @@ void FacebookProto::ProcessMessages(void* data)
std::vector<facebook_message> messages;
- facebook_json_parser* p = new facebook_json_parser(this);
- p->parse_messages(resp, &messages, &facy.notifications);
- delete p;
+ facebook_json_parser* p = new facebook_json_parser(this);
+ p->parse_messages(resp, &messages, &facy.notifications);
+ delete p;
- ReceiveMessages(messages);
+ ReceiveMessages(messages);
- ShowNotifications();
+ ShowNotifications();
- debugLogA("*** Messages processed");
+ debugLogA("*** Messages processed");
CODE_BLOCK_CATCH