diff options
author | Robert Pösel <robyer@seznam.cz> | 2014-11-26 08:44:18 +0000 |
---|---|---|
committer | Robert Pösel <robyer@seznam.cz> | 2014-11-26 08:44:18 +0000 |
commit | c1d2d5892eda3070975bbb82ac4f2e35d7bc139e (patch) | |
tree | 5902759b93eed462f1b8815a19b9f9e35d674046 /protocols/FacebookRM | |
parent | f5e38aaba573fa720894433ae746b3a7a741356e (diff) |
Facebook: Various optimizations and cleanup
git-svn-id: http://svn.miranda-ng.org/main/trunk@11083 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/FacebookRM')
-rw-r--r-- | protocols/FacebookRM/src/avatars.cpp | 2 | ||||
-rw-r--r-- | protocols/FacebookRM/src/captcha.cpp | 2 | ||||
-rw-r--r-- | protocols/FacebookRM/src/chat.cpp | 2 | ||||
-rw-r--r-- | protocols/FacebookRM/src/client.h | 14 | ||||
-rw-r--r-- | protocols/FacebookRM/src/communication.cpp | 26 | ||||
-rw-r--r-- | protocols/FacebookRM/src/connection.cpp | 2 | ||||
-rw-r--r-- | protocols/FacebookRM/src/contacts.cpp | 22 | ||||
-rw-r--r-- | protocols/FacebookRM/src/entities.h | 42 | ||||
-rw-r--r-- | protocols/FacebookRM/src/json.cpp | 62 | ||||
-rw-r--r-- | protocols/FacebookRM/src/list.hpp | 7 | ||||
-rw-r--r-- | protocols/FacebookRM/src/messages.cpp | 6 | ||||
-rw-r--r-- | protocols/FacebookRM/src/process.cpp | 13 | ||||
-rw-r--r-- | protocols/FacebookRM/src/proto.cpp | 2 | ||||
-rw-r--r-- | protocols/FacebookRM/src/proto.h | 10 | ||||
-rw-r--r-- | protocols/FacebookRM/src/utils.cpp | 39 | ||||
-rw-r--r-- | protocols/FacebookRM/src/utils.h | 16 |
16 files changed, 117 insertions, 150 deletions
diff --git a/protocols/FacebookRM/src/avatars.cpp b/protocols/FacebookRM/src/avatars.cpp index c4715d71f4..0be1b41b65 100644 --- a/protocols/FacebookRM/src/avatars.cpp +++ b/protocols/FacebookRM/src/avatars.cpp @@ -41,7 +41,7 @@ bool FacebookProto::GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::string * return true;
}
-void FacebookProto::CheckAvatarChange(MCONTACT hContact, std::string image_url)
+void FacebookProto::CheckAvatarChange(MCONTACT hContact, const std::string &image_url)
{
std::tstring::size_type pos = image_url.rfind("/");
diff --git a/protocols/FacebookRM/src/captcha.cpp b/protocols/FacebookRM/src/captcha.cpp index 3abec878f7..b3909e53d1 100644 --- a/protocols/FacebookRM/src/captcha.cpp +++ b/protocols/FacebookRM/src/captcha.cpp @@ -106,7 +106,7 @@ static INT_PTR CALLBACK CaptchaFormDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam bool FacebookProto::RunCaptchaForm(std::string captchaUrl, std::string &result) { debugLogA("RunCaptchaForm: reading picture from %s", captchaUrl.c_str()); - result = ""; + result.clear(); NETLIBHTTPREQUEST req = { sizeof(req) }; req.requestType = REQUEST_GET; diff --git a/protocols/FacebookRM/src/chat.cpp b/protocols/FacebookRM/src/chat.cpp index b4a8f3511e..2ceaeec16d 100644 --- a/protocols/FacebookRM/src/chat.cpp +++ b/protocols/FacebookRM/src/chat.cpp @@ -52,7 +52,7 @@ void FacebookProto::UpdateChat(const TCHAR *tchat_id, const char *id, const char // TODO: keep it here or move it somewhere else?
std::map<std::tstring, facebook_chatroom*>::iterator chatroom = facy.chat_rooms.find(tchat_id);
if (chatroom != facy.chat_rooms.end()) {
- chatroom->second->message_readers = "";
+ chatroom->second->message_readers.clear();
}
}
diff --git a/protocols/FacebookRM/src/client.h b/protocols/FacebookRM/src/client.h index c4087c5f4c..d69c311363 100644 --- a/protocols/FacebookRM/src/client.h +++ b/protocols/FacebookRM/src/client.h @@ -37,10 +37,6 @@ public: facebook_client()
{
- username_ = password_ = \
- chat_sequence_num_ = chat_channel_host_ = chat_channel_partition_ = \
- dtsg_ = csrf_ = logout_hash_ = chat_sticky_num_ = chat_sticky_pool_ = chat_conn_num_ = chat_clientid_ = chat_traceid_ = "";
-
msgid_ = error_count_ = last_feeds_update_ = last_notification_time_ = 0;
https_ = is_idle_ = is_typing_ = false;
@@ -131,9 +127,9 @@ public: unsigned int error_count_;
- bool handle_entry(std::string method);
- bool handle_success(std::string method);
- bool handle_error(std::string method, int force_disconnect = 0);
+ bool handle_entry(const std::string &method);
+ bool handle_success(const std::string &method);
+ bool handle_error(const std::string &method, int force_disconnect = 0);
void __inline increment_error() { this->error_count_++; }
void __inline decrement_error() { if (error_count_ > 0) error_count_--; }
@@ -143,7 +139,7 @@ public: // Helpers for data
- std::string __inline phstamp(std::string data) {
+ std::string __inline phstamp(const std::string &data) {
std::stringstream out;
out << '2' << this->csrf_ << (int)data.length();
return out.str();
@@ -188,7 +184,7 @@ public: std::map<std::string, int> messages_ignore;
bool channel();
- int send_message(MCONTACT, std::string message_recipient, std::string message_text, std::string *error_text, MessageMethod method, std::string captchaPersistData = "", std::string captcha = "");
+ int send_message(MCONTACT, const std::string &message_recipient, const std::string &message_text, std::string *error_text, MessageMethod method, const std::string &captchaPersistData = "", const std::string &captcha = "");
////////////////////////////////////////////////////////////
diff --git a/protocols/FacebookRM/src/communication.cpp b/protocols/FacebookRM/src/communication.cpp index 398093fe3f..773abb937a 100644 --- a/protocols/FacebookRM/src/communication.cpp +++ b/protocols/FacebookRM/src/communication.cpp @@ -132,7 +132,7 @@ http::response facebook_client::flap(RequestType request_type, std::string* requ pos += 8; int error_num = atoi(resp.data.substr(pos, resp.data.find(",", pos) - pos).c_str()); if (error_num != 0) { - std::string error = ""; + std::string error; pos = resp.data.find("\"errorDescription\":\"", pos); if (pos != std::string::npos) { @@ -142,7 +142,7 @@ http::response facebook_client::flap(RequestType request_type, std::string* requ error = ptrA( mir_utf8decodeA(error.c_str())); } - std::string title = ""; + std::string title; pos = resp.data.find("\"errorSummary\":\"", pos); if (pos != std::string::npos) { pos += 16; @@ -168,20 +168,20 @@ http::response facebook_client::flap(RequestType request_type, std::string* requ return resp; } -bool facebook_client::handle_entry(std::string method) +bool facebook_client::handle_entry(const std::string &method) { parent->debugLogA(" >> Entering %s()", method.c_str()); return true; } -bool facebook_client::handle_success(std::string method) +bool facebook_client::handle_success(const std::string &method) { parent->debugLogA(" << Quitting %s()", method.c_str()); reset_error(); return true; } -bool facebook_client::handle_error(std::string method, int action) +bool facebook_client::handle_error(const std::string &method, int action) { increment_error(); parent->debugLogA("!!!!! %s(): Something with Facebook went wrong", method.c_str()); @@ -818,15 +818,17 @@ bool facebook_client::login(const char *username, const char *password) if (resp.code == HTTP_CODE_FOUND && resp.headers.find("Location") != resp.headers.end()) { + std::string location = resp.headers["Location"]; + // Check for invalid requests - if (resp.headers["Location"].find("invalid_request.php") != std::string::npos) { + if (location.find("invalid_request.php") != std::string::npos) { client_notify(TranslateT("Login error: Invalid request.")); parent->debugLogA(" ! ! Login error: Invalid request."); return handle_error("login", FORCE_QUIT); } // Check whether some Facebook things are required - if (resp.headers["Location"].find("help.php") != std::string::npos) + if (location.find("help.php") != std::string::npos) { client_notify(TranslateT("Login error: Some Facebook things are required.")); parent->debugLogA(" ! ! Login error: Some Facebook things are required."); @@ -834,7 +836,7 @@ bool facebook_client::login(const char *username, const char *password) } // Check whether setting Machine name is required - if (resp.headers["Location"].find("/checkpoint/") != std::string::npos) + if (location.find("/checkpoint/") != std::string::npos) { resp = flap(REQUEST_SETUP_MACHINE, NULL, NULL, REQUEST_GET); @@ -974,7 +976,9 @@ bool facebook_client::logout() http::response resp = flap(REQUEST_LOGOUT, &data); - this->username_ = this->password_ = this->self_.user_id = ""; + this->username_.clear(); + this->password_.clear(); + this->self_.user_id.clear(); switch (resp.code) { @@ -1210,14 +1214,14 @@ bool facebook_client::channel() } } -int facebook_client::send_message(MCONTACT hContact, std::string message_recipient, std::string message_text, std::string *error_text, MessageMethod method, std::string captcha_persist_data, std::string captcha) +int facebook_client::send_message(MCONTACT hContact, const std::string &message_recipient, const std::string &message_text, std::string *error_text, MessageMethod method, const std::string &captcha_persist_data, const std::string &captcha) { ScopedLock s(send_message_lock_); handle_entry("send_message"); http::response resp; - std::string data = ""; + std::string data; if (!captcha.empty()) { data += "&captcha_persist_data=" + captcha_persist_data; diff --git a/protocols/FacebookRM/src/connection.cpp b/protocols/FacebookRM/src/connection.cpp index d1a10bb756..d0d33ab838 100644 --- a/protocols/FacebookRM/src/connection.cpp +++ b/protocols/FacebookRM/src/connection.cpp @@ -201,7 +201,7 @@ void FacebookProto::UpdateLoop(void *) time_t tim = ::time(NULL); debugLogA(">>>>> Entering Facebook::UpdateLoop[%d]", tim); - for (int i = -1; !isOffline(); i = ++i % 50) + for (int i = -1; !isOffline(); i = (i + 1) % 50) { if (i != -1) { ProcessBuddyList(NULL); diff --git a/protocols/FacebookRM/src/contacts.cpp b/protocols/FacebookRM/src/contacts.cpp index 7e76fdb4b7..5da990e616 100644 --- a/protocols/FacebookRM/src/contacts.cpp +++ b/protocols/FacebookRM/src/contacts.cpp @@ -22,7 +22,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "common.h" -void updateStringUtf(FacebookProto *proto, MCONTACT hContact, const char *key, std::string value) { +void updateStringUtf(FacebookProto *proto, MCONTACT hContact, const char *key, const std::string &value) { bool update_required = true; DBVARIANT dbv; @@ -52,7 +52,7 @@ void FacebookProto::SaveName(MCONTACT hContact, const facebook_user *fbu) updateStringUtf(this, hContact, FACEBOOK_KEY_FIRST_NAME, names.size() > 0 ? names.front().c_str() : ""); updateStringUtf(this, hContact, FACEBOOK_KEY_LAST_NAME, names.size() > 1 ? names.back().c_str() : ""); - std::string middle = ""; + std::string middle; if (names.size() > 2) { for (std::string::size_type i = 1; i < names.size() - 1; i++) { if (!middle.empty()) @@ -75,7 +75,7 @@ bool FacebookProto::IsMyContact(MCONTACT hContact, bool include_chat) return false; } -MCONTACT FacebookProto::ChatIDToHContact(std::tstring chat_id) +MCONTACT FacebookProto::ChatIDToHContact(const std::tstring &chat_id) { // First check cache std::map<std::tstring, MCONTACT>::iterator it = facy.chat_id_to_hcontact.find(chat_id); @@ -102,7 +102,7 @@ MCONTACT FacebookProto::ChatIDToHContact(std::tstring chat_id) return 0; } -MCONTACT FacebookProto::ContactIDToHContact(std::string user_id) +MCONTACT FacebookProto::ContactIDToHContact(const std::string &user_id) { // First check cache std::map<std::string, MCONTACT>::iterator it = facy.user_id_to_hcontact.find(user_id); @@ -129,7 +129,7 @@ MCONTACT FacebookProto::ContactIDToHContact(std::string user_id) return 0; } -std::string FacebookProto::ThreadIDToContactID(std::string thread_id) +std::string FacebookProto::ThreadIDToContactID(const std::string &thread_id) { // First check cache std::map<std::string, std::string>::iterator it = facy.thread_id_to_user_id.find(thread_id); @@ -164,7 +164,7 @@ std::string FacebookProto::ThreadIDToContactID(std::string thread_id) data += "&__a=1&__dyn=&__req=&ttstamp=" + facy.ttstamp(); data += "&threads[thread_ids][0]=" + utils::url::encode(thread_id); - std::string user_id = ""; + std::string user_id; http::response resp = facy.flap(REQUEST_THREAD_INFO, &data); if (resp.code == HTTP_CODE_OK) { @@ -277,7 +277,9 @@ void FacebookProto::LoadChatInfo(facebook_chatroom *fbc) unsigned int namesCount = 3; // how many names should be in room name; max. 5 for (std::map<std::string, std::string>::iterator it = fbc->participants.begin(); it != fbc->participants.end(); ++it) { - if (it->second.empty()) + std::string participant = it->second; + + if (participant.empty()) continue; if (!fbc->chat_name.empty()) @@ -285,11 +287,11 @@ void FacebookProto::LoadChatInfo(facebook_chatroom *fbc) std::string name; std::string::size_type pos; - if ((pos = it->second.find(" ")) != std::string::npos) { - name = it->second.substr(0, pos); + if ((pos = participant.find(" ")) != std::string::npos) { + name = participant.substr(0, pos); } else { - name = it->second; + name = participant; } fbc->chat_name += _A2T(name.c_str()); diff --git a/protocols/FacebookRM/src/entities.h b/protocols/FacebookRM/src/entities.h index 35c062d4af..99e171348b 100644 --- a/protocols/FacebookRM/src/entities.h +++ b/protocols/FacebookRM/src/entities.h @@ -45,29 +45,12 @@ struct facebook_user facebook_user() { this->handle = NULL; - this->user_id = this->real_name = this->nick = this->username = this->image_url = ""; this->status_id = ID_STATUS_OFFLINE; this->gender = this->last_active = 0; this->deleted = this->idle = false; this->client = CLIENT_WEB; } - facebook_user(facebook_user* fu) - { - this->handle = fu->handle; - this->user_id = fu->user_id; - this->real_name = fu->real_name; - this->nick = fu->nick; - this->username = fu->username; - this->status_id = fu->status_id; - this->gender = fu->gender; - this->last_active = fu->last_active; - this->image_url = fu->image_url; - this->deleted = fu->deleted; - this->idle = fu->idle; - this->client = fu->client; - } - TCHAR *getMirVer() { switch (this->client) { @@ -117,29 +100,12 @@ struct facebook_message facebook_message() { - this->user_id = this->message_text = this->sender_name = this->message_id = this->thread_id = this->timestamp = ""; this->time = 0; this->isUnread = this->isIncoming = true; this->isChat = false; this->type = MESSAGE; this->flag_ = 0; } - - facebook_message(const facebook_message& msg) - { - this->user_id = msg.user_id; - this->sender_name = msg.sender_name; - this->message_text = msg.message_text; - this->message_id = msg.message_id; - this->message_id = msg.thread_id; - this->timestamp = msg.timestamp; - this->time = msg.time; - this->isIncoming = msg.isIncoming; - this->isUnread = msg.isUnread; - this->isChat = msg.isChat; - this->type = msg.type; - this->flag_ = msg.flag_; - } }; struct facebook_notification @@ -154,7 +120,6 @@ struct facebook_notification facebook_notification() { - this->user_id = this->text = this->link = this->id = ""; this->time = 0; this->seen = false; this->hWndPopup = NULL; @@ -168,10 +133,7 @@ struct facebook_newsfeed std::string text; std::string link; - facebook_newsfeed() - { - this->user_id = this->title = this->text = this->link = ""; - } + facebook_newsfeed() {} }; struct send_chat @@ -208,7 +170,6 @@ struct popup_data struct status_data { status_data() { - this->user_id = this->text = this->url = this->place = this->privacy = ""; this->isPage = false; } std::string user_id; @@ -223,7 +184,6 @@ struct status_data struct wall_data { wall_data() { - this->user_id = ""; this->title = NULL; this->isPage = false; } diff --git a/protocols/FacebookRM/src/json.cpp b/protocols/FacebookRM/src/json.cpp index 98ac75790f..4f7649475d 100644 --- a/protocols/FacebookRM/src/json.cpp +++ b/protocols/FacebookRM/src/json.cpp @@ -116,13 +116,13 @@ int facebook_json_parser::parse_buddy_list(void* data, List::List< facebook_user bool b; // "webStatus" and "otherStatus" are marked as "WEB" on FB website - if ((b = json_as_pstring(webStatus) == "active") || json_as_pstring(otherStatus) == "active") { + if ((b = (json_as_pstring(webStatus) == "active")) || json_as_pstring(otherStatus) == "active") { current->status_id = ID_STATUS_ONLINE; current->client = b ? CLIENT_WEB : CLIENT_OTHER; } // "fbAppStatus" and "messengerStatus" are marked as "MOBILE" on FB website - if ((b = json_as_pstring(fbAppStatus) == "active") || json_as_pstring(messengerStatus) == "active") { + if ((b = (json_as_pstring(fbAppStatus) == "active")) || json_as_pstring(messengerStatus) == "active") { current->status_id = ID_STATUS_ONTHEPHONE; current->client = b ? CLIENT_APP : CLIENT_MESSENGER; } @@ -288,7 +288,7 @@ int facebook_json_parser::parse_notifications(void *data, std::map< std::string, return EXIT_SUCCESS; } -bool ignore_duplicits(FacebookProto *proto, std::string mid, std::string text) +bool ignore_duplicits(FacebookProto *proto, const std::string &mid, const std::string &text) { ScopedLock s(proto->facy.send_message_lock_); @@ -305,14 +305,14 @@ bool ignore_duplicits(FacebookProto *proto, std::string mid, std::string text) return false; } -void parseAttachments(FacebookProto *proto, std::string *message_text, JSONNODE *it, std::string thread_id, std::string other_user_fbid) +void parseAttachments(FacebookProto *proto, std::string *message_text, JSONNODE *it, const std::string &thread_id, std::string other_user_fbid) { // Process attachements and stickers JSONNODE *has_attachment = json_get(it, "has_attachment"); if (has_attachment != NULL && json_as_bool(has_attachment)) { // Append attachements - std::string type = ""; - std::string attachments_text = ""; + std::string type; + std::string attachments_text; JSONNODE *attachments = json_get(it, "attachments"); for (unsigned int j = 0; j < json_size(attachments); j++) { JSONNODE *itAttachment = json_at(attachments, j); @@ -467,25 +467,28 @@ int facebook_json_parser::parse_messages(void* data, std::vector< facebook_messa std::tstring tid = json_as_string(threadid); std::string reader_id = json_as_pstring(reader); - std::map<std::tstring, facebook_chatroom*>::iterator chatroom = proto->facy.chat_rooms.find(tid); - if (chatroom != proto->facy.chat_rooms.end()) { - std::map<std::string, std::string>::const_iterator participant = chatroom->second->participants.find(reader_id); - if (participant == chatroom->second->participants.end()) { + std::map<std::tstring, facebook_chatroom*>::iterator it = proto->facy.chat_rooms.find(tid); + if (it != proto->facy.chat_rooms.end()) { + facebook_chatroom *chatroom = it->second; + std::map<std::string, std::string> participants = chatroom->participants; + + std::map<std::string, std::string>::const_iterator participant = participants.find(reader_id); + if (participant == participants.end()) { // TODO: load name of this participant std::string name = reader_id; - chatroom->second->participants.insert(std::make_pair(reader_id, name)); + participants.insert(std::make_pair(reader_id, name)); proto->AddChatContact(tid.c_str(), reader_id.c_str(), name.c_str()); } - participant = chatroom->second->participants.find(reader_id); - if (participant != chatroom->second->participants.end()) { + participant = participants.find(reader_id); + if (participant != participants.end()) { MCONTACT hChatContact = proto->ChatIDToHContact(tid); - if (!chatroom->second->message_readers.empty()) - chatroom->second->message_readers += ", "; - chatroom->second->message_readers += participant->second; + if (!chatroom->message_readers.empty()) + chatroom->message_readers += ", "; + chatroom->message_readers += participant->second; - ptrT readers(mir_utf8decodeT(chatroom->second->message_readers.c_str())); + ptrT readers(mir_utf8decodeT(chatroom->message_readers.c_str())); StatusTextData st = { 0 }; st.cbSize = sizeof(st); @@ -565,7 +568,7 @@ int facebook_json_parser::parse_messages(void* data, std::vector< facebook_messa message->isChat = (gthreadinfo != NULL && json_as_pstring(gthreadinfo) != "null"); if (!message->isChat && !message->isIncoming) { - message->sender_name = ""; + message->sender_name.clear(); message->user_id = proto->ThreadIDToContactID(message->thread_id); // TODO: Check if we have contact with this user_id in friendlist and otherwise do something different? } @@ -656,17 +659,20 @@ int facebook_json_parser::parse_messages(void* data, std::vector< facebook_messa std::tstring tid = json_as_string(thread_); std::string from_id = json_as_pstring(from_); - std::map<std::tstring, facebook_chatroom*>::iterator chatroom = proto->facy.chat_rooms.find(tid); - if (chatroom != proto->facy.chat_rooms.end()) { - std::map<std::string, std::string>::const_iterator participant = chatroom->second->participants.find(from_id); - if (participant == chatroom->second->participants.end()) { + std::map<std::tstring, facebook_chatroom*>::iterator it = proto->facy.chat_rooms.find(tid); + if (it != proto->facy.chat_rooms.end()) { + facebook_chatroom *chatroom = it->second; + std::map<std::string, std::string> participants = chatroom->participants; + + std::map<std::string, std::string>::const_iterator participant = participants.find(from_id); + if (participant == participants.end()) { // TODO: load name of this participant std::string name = from_id; proto->AddChatContact(tid.c_str(), from_id.c_str(), name.c_str()); } - participant = chatroom->second->participants.find(from_id); - if (participant != chatroom->second->participants.end()) { + participant = participants.find(from_id); + if (participant != participants.end()) { MCONTACT hChatContact = proto->ChatIDToHContact(tid); ptrT name(mir_utf8decodeT(participant->second.c_str())); @@ -761,7 +767,7 @@ int facebook_json_parser::parse_messages(void* data, std::vector< facebook_messa message->time = utils::time::fix_timestamp(json_as_float(timestamp)); message->user_id = id; message->message_id = message_id; - message->sender_name = ""; + message->sender_name.clear(); message->thread_id = json_as_pstring(thread_id_); message->type = CALL; @@ -1022,7 +1028,7 @@ int facebook_json_parser::parse_thread_info(void* data, std::string* user_id) return EXIT_FAILURE; } - std::map<std::string, std::string> thread_ids; + //std::map<std::string, std::string> thread_ids; for (unsigned int i = 0; i < json_size(threads); i++) { JSONNODE *it = json_at(threads, i); JSONNODE *canonical = json_get(it, "canonical_fbid"); @@ -1064,7 +1070,7 @@ int facebook_json_parser::parse_user_info(void* data, facebook_user* fbu) return EXIT_FAILURE; } - std::map<std::string, std::string> user_ids; + //std::map<std::string, std::string> user_ids; for (unsigned int i = 0; i < json_size(profiles); i++) { JSONNODE *it = json_at(profiles, i); @@ -1118,7 +1124,7 @@ int facebook_json_parser::parse_chat_info(void* data, facebook_chatroom* fbc) } }*/ - std::map<std::string, std::string> thread_ids; + //std::map<std::string, std::string> thread_ids; for (unsigned int i = 0; i < json_size(threads); i++) { JSONNODE *it = json_at(threads, i); diff --git a/protocols/FacebookRM/src/list.hpp b/protocols/FacebookRM/src/list.hpp index 851645509b..d54811bb15 100644 --- a/protocols/FacebookRM/src/list.hpp +++ b/protocols/FacebookRM/src/list.hpp @@ -135,11 +135,8 @@ namespace List help->prev->next = help->next;
help->next->prev = help->prev;
}
- if (help != NULL)
- {
- this->count--;
- delete help;
- }
+ this->count--;
+ delete help;
break;
}
}
diff --git a/protocols/FacebookRM/src/messages.cpp b/protocols/FacebookRM/src/messages.cpp index 269c0aeb91..d25514fb4a 100644 --- a/protocols/FacebookRM/src/messages.cpp +++ b/protocols/FacebookRM/src/messages.cpp @@ -47,7 +47,7 @@ void FacebookProto::SendMsgWorker(void *p) ProtoBroadcastAck(data->hContact, ACKTYPE_MESSAGE, ACKRESULT_FAILED, data->msgid, 0); } else { int retries = 5; - std::string error_text = ""; + std::string error_text; int result = SEND_MESSAGE_ERROR; while (result == SEND_MESSAGE_ERROR && retries > 0) { result = facy.send_message(data->hContact, std::string(id), data->msg, &error_text, retries % 2 == 0 ? MESSAGE_INBOX : MESSAGE_MERCURY); @@ -73,7 +73,7 @@ void FacebookProto::SendChatMsgWorker(void *p) return; send_chat *data = static_cast<send_chat*>(p); - std::string err_message = ""; + std::string err_message; // replace %% back to %, because chat automatically does this to sent messages utils::text::replace_all(&data->msg, "%%", "%"); @@ -194,7 +194,7 @@ void FacebookProto::ReadMessageWorker(void *p) facy.flap(REQUEST_MARK_READ, &data); } -void FacebookProto::StickerAsSmiley(std::string sticker, std::string url, MCONTACT hContact) +void FacebookProto::StickerAsSmiley(std::string sticker, const std::string &url, MCONTACT hContact) { std::string b64 = ptrA( mir_base64_encode((PBYTE)sticker.c_str(), (unsigned)sticker.length())); b64 = utils::url::encode(b64); diff --git a/protocols/FacebookRM/src/process.cpp b/protocols/FacebookRM/src/process.cpp index 93692db613..bfb5904701 100644 --- a/protocols/FacebookRM/src/process.cpp +++ b/protocols/FacebookRM/src/process.cpp @@ -710,7 +710,7 @@ void FacebookProto::ReceiveMessages(std::vector<facebook_message*> messages, boo facy.chat_rooms.insert(std::make_pair(tthread_id, fbc)); } - MCONTACT hChatContact; + MCONTACT hChatContact = NULL; // RM TODO: better use check if chatroom exists/is in db/is online... no? // like: if (ChatIDToHContact(tthread_id) == NULL) { ptrA users(GetChatUsers(tthread_id.c_str())); @@ -878,11 +878,12 @@ void FacebookProto::ShowNotifications() { // Show popups for unseen notifications and/or write them to chatroom for (std::map<std::string, facebook_notification*>::iterator it = facy.notifications.begin(); it != facy.notifications.end(); ++it) { - if (it->second != NULL && !it->second->seen) { - debugLogA(" Showing popup for notification: %s", it->second->text.c_str()); - ptrT szText(mir_utf8decodeT(it->second->text.c_str())); - it->second->hWndPopup = NotifyEvent(m_tszUserName, szText, ContactIDToHContact(it->second->user_id), FACEBOOK_EVENT_NOTIFICATION, &it->second->link, &it->second->id); - it->second->seen = true; + facebook_notification *notification = it->second; + if (notification != NULL && !notification->seen) { + debugLogA(" Showing popup for notification: %s", notification->text.c_str()); + ptrT szText(mir_utf8decodeT(notification->text.c_str())); + notification->hWndPopup = NotifyEvent(m_tszUserName, szText, ContactIDToHContact(notification->user_id), FACEBOOK_EVENT_NOTIFICATION, ¬ification->link, ¬ification->id); + notification->seen = true; } } } diff --git a/protocols/FacebookRM/src/proto.cpp b/protocols/FacebookRM/src/proto.cpp index a3d0564ec9..ffd21442c9 100644 --- a/protocols/FacebookRM/src/proto.cpp +++ b/protocols/FacebookRM/src/proto.cpp @@ -367,7 +367,7 @@ int FacebookProto::GetInfo(MCONTACT hContact, int infoType) INT_PTR FacebookProto::GetMyAwayMsg(WPARAM wParam, LPARAM lParam) { ptrT statusMsg(getTStringA("StatusMsg")); - if (statusMsg == NULL || _tcslen(statusMsg) == 0) + if (statusMsg == NULL || statusMsg[0] == '\0') return 0; return (lParam & SGMA_UNICODE) ? (INT_PTR)mir_t2u(statusMsg) : (INT_PTR)mir_t2a(statusMsg); diff --git a/protocols/FacebookRM/src/proto.h b/protocols/FacebookRM/src/proto.h index 98b7d0e7cb..fc869b581c 100644 --- a/protocols/FacebookRM/src/proto.h +++ b/protocols/FacebookRM/src/proto.h @@ -200,9 +200,9 @@ public: // Contacts handling bool IsMyContact(MCONTACT, bool include_chat = false); - MCONTACT ContactIDToHContact(std::string); - MCONTACT ChatIDToHContact(std::tstring); - std::string ThreadIDToContactID(std::string thread_id); + MCONTACT ContactIDToHContact(const std::string&); + MCONTACT ChatIDToHContact(const std::tstring&); + std::string ThreadIDToContactID(const std::string&); void LoadContactInfo(facebook_user* fbu); MCONTACT AddToContactList(facebook_user*, ContactType type, bool force_add = false); void SetAllContactStatuses(int status); @@ -233,9 +233,9 @@ public: // Helpers std::tstring GetAvatarFolder(); bool GetDbAvatarInfo(PROTO_AVATAR_INFORMATIONT &ai, std::string *url); - void CheckAvatarChange(MCONTACT hContact, std::string image_url); + void CheckAvatarChange(MCONTACT hContact, const std::string &image_url); void ToggleStatusMenuItems(BOOL bEnable); - void StickerAsSmiley(std::string stickerId, std::string url, MCONTACT hContact); + void StickerAsSmiley(std::string stickerId, const std::string &url, MCONTACT hContact); void SaveName(MCONTACT hContact, const facebook_user *fbu); void OpenUrl(std::string url); void __cdecl OpenUrlThread(void*); diff --git a/protocols/FacebookRM/src/utils.cpp b/protocols/FacebookRM/src/utils.cpp index 1ecaa1328c..39ab01e2a0 100644 --- a/protocols/FacebookRM/src/utils.cpp +++ b/protocols/FacebookRM/src/utils.cpp @@ -63,7 +63,7 @@ DWORD utils::time::fix_timestamp(unsigned __int64 mili_timestamp) return (DWORD) mili_timestamp;
}
-DWORD utils::conversion::to_timestamp(std::string data)
+DWORD utils::conversion::to_timestamp(const std::string &data)
{
DWORD timestamp = NULL;
if (!utils::conversion::from_string<DWORD>(timestamp, data, std::dec)) {
@@ -97,7 +97,7 @@ std::string utils::conversion::to_string(void* data, WORD type) return out.str();
}
-void utils::text::replace_first(std::string* data, std::string from, std::string to)
+void utils::text::replace_first(std::string* data, const std::string &from, const std::string &to)
{
std::string::size_type position = data->find(from);
if (position != std::string::npos)
@@ -106,7 +106,7 @@ void utils::text::replace_first(std::string* data, std::string from, std::string }
}
-void utils::text::replace_all(std::string* data, std::string from, std::string to)
+void utils::text::replace_all(std::string* data, const std::string &from, const std::string &to)
{
std::string::size_type position = 0;
@@ -117,7 +117,7 @@ void utils::text::replace_all(std::string* data, std::string from, std::string t }
}
-unsigned int utils::text::count_all(std::string* data, std::string term)
+unsigned int utils::text::count_all(std::string* data, const std::string &term)
{
unsigned int count = 0;
std::string::size_type position = 0;
@@ -172,7 +172,7 @@ std::string utils::text::html_entities_decode(std::string data) // http://www.natural-innovations.com/wa/doc-charset.html
// http://webdesign.about.com/library/bl_htmlcodes.htm
- std::string new_string = "";
+ std::string new_string;
for (std::string::size_type i = 0; i < data.length(); i++)
{
if (data.at(i) == '&' && (i+1) < data.length() && data.at(i+1) == '#')
@@ -208,7 +208,7 @@ std::string utils::text::edit_html(std::string data) {
std::string::size_type end = 0;
std::string::size_type start = 0;
- std::string new_string = "";
+ std::string new_string;
while (end != std::string::npos)
{
@@ -224,7 +224,7 @@ std::string utils::text::edit_html(std::string data) start = end = 0;
data = new_string;
- new_string = "";
+ new_string.clear();
while (end != std::string::npos)
{
@@ -241,7 +241,7 @@ std::string utils::text::edit_html(std::string data) // Remove "Translate" link
start = end = 0;
data = new_string;
- new_string = "";
+ new_string.clear();
while (end != std::string::npos)
{
end = data.find("role=\\\"button\\\">", start);
@@ -291,9 +291,9 @@ std::string utils::text::edit_html(std::string data) }
-std::string utils::text::remove_html(std::string data)
+std::string utils::text::remove_html(const std::string &data)
{
- std::string new_string = "";
+ std::string new_string;
for (std::string::size_type i = 0; i < data.length(); i++)
{
@@ -312,9 +312,9 @@ std::string utils::text::remove_html(std::string data) return new_string;
}
-std::string utils::text::slashu_to_utf8(std::string data)
+std::string utils::text::slashu_to_utf8(const std::string &data)
{
- std::string new_string = "";
+ std::string new_string;
for (std::string::size_type i = 0; i < data.length(); i++)
{
@@ -332,7 +332,7 @@ std::string utils::text::slashu_to_utf8(std::string data) return new_string;
}
-std::string utils::text::trim(std::string data, bool rtrim)
+std::string utils::text::trim(const std::string &data, bool rtrim)
{
std::string spaces = " \t\r\n";
std::string::size_type begin = rtrim ? 0 : data.find_first_not_of(spaces);
@@ -341,7 +341,7 @@ std::string utils::text::trim(std::string data, bool rtrim) return (end != std::string::npos) ? data.substr(begin, end + 1 - begin) : "";
}
-void utils::text::explode(std::string str, std::string separator, std::vector<std::string>* results)
+void utils::text::explode(std::string str, const std::string &separator, std::vector<std::string>* results)
{
std::string::size_type pos;
pos = str.find_first_of(separator);
@@ -360,7 +360,7 @@ void utils::text::explode(std::string str, std::string separator, std::vector<st std::string utils::text::source_get_value(std::string* data, unsigned int argument_count, ...)
{
va_list arg;
- std::string ret = "";
+ std::string ret;
std::string::size_type start = 0, end = 0;
va_start(arg, argument_count);
@@ -389,7 +389,7 @@ std::string utils::text::source_get_value(std::string* data, unsigned int argume std::string utils::text::source_get_value2(std::string* data, const char *term, const char *endings, bool wholeString)
{
std::string::size_type start = 0, end = 0;
- std::string ret = "";
+ std::string ret;
start = data->find(term);
if (start != std::string::npos) {
@@ -408,13 +408,13 @@ std::string utils::text::source_get_value2(std::string* data, const char *term, std::string utils::text::source_get_form_data(std::string* data)
{
- std::string values = "";
+ std::string values;
std::string::size_type start = 0;
start = data->find("<input", start);
while (start != std::string::npos) {
start++;
- std::string attr = "", value = "";
+ std::string attr, value;
std::string::size_type pos = data->find("name=\"", start);
if (pos != std::string::npos) {
@@ -449,8 +449,9 @@ std::string utils::text::rand_string(int len, const char *chars) {
std::stringstream out;
+ int strLen = (int)strlen(chars);
for (int i = 0; i < len; ++i) {
- out << chars[utils::number::random(0, (int)strlen(chars))];
+ out << chars[utils::number::random(0, strLen)];
}
return out.str();
diff --git a/protocols/FacebookRM/src/utils.h b/protocols/FacebookRM/src/utils.h index 69315ae1e0..6a5943e0a3 100644 --- a/protocols/FacebookRM/src/utils.h +++ b/protocols/FacebookRM/src/utils.h @@ -53,25 +53,25 @@ namespace utils namespace text
{
- void replace_first(std::string* data, std::string from, std::string to);
- void replace_all(std::string* data, std::string from, std::string to);
- unsigned int count_all(std::string* data, std::string term);
+ void replace_first(std::string* data, const std::string &from, const std::string &to);
+ void replace_all(std::string* data, const std::string &from, const std::string &to);
+ unsigned int count_all(std::string* data, const std::string &term);
std::string html_entities_decode(std::string data);
std::string edit_html(std::string data);
- std::string remove_html(std::string data);
- std::string slashu_to_utf8(std::string data);
- std::string trim(std::string data, bool rtrim = false);
+ std::string remove_html(const std::string &data);
+ std::string slashu_to_utf8(const std::string &data);
+ std::string trim(const std::string &data, bool rtrim = false);
std::string source_get_value(std::string* data, unsigned int argument_count, ...);
std::string source_get_value2(std::string* data, const char *term, const char *endings, bool wholeString = false);
std::string source_get_form_data(std::string* data);
std::string rand_string(int len, const char *chars = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz");
- void explode(std::string str, std::string separator, std::vector<std::string>* results);
+ void explode(std::string str, const std::string &separator, std::vector<std::string>* results);
void append_ordinal(unsigned long value, std::string* data);
};
namespace conversion
{
- DWORD to_timestamp(std::string data);
+ DWORD to_timestamp(const std::string &data);
std::string to_string(void*, WORD type);
template <class T>
|