/* Facebook plugin for Miranda Instant Messenger _____________________________________________ Copyright � 2009-11 Michal Zelinka, 2011-16 Robert P�sel This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma once struct facebook_user { MCONTACT handle; std::string user_id; std::string real_name; std::string nick; std::string username; unsigned int status_id; unsigned int gender; time_t last_active; std::string image_url; bool deleted; bool idle; bool updated; ClientType client; ContactType type; facebook_user() { this->handle = NULL; this->status_id = ID_STATUS_OFFLINE; this->gender = this->last_active = 0; this->deleted = this->idle = this->updated = false; this->client = CLIENT_WEB; this->type = CONTACT_NONE; } wchar_t *getMirVer() { switch (this->client) { case CLIENT_APP: return FACEBOOK_CLIENT_APP; case CLIENT_MESSENGER: return FACEBOOK_CLIENT_MESSENGER; case CLIENT_OTHER: return FACEBOOK_CLIENT_OTHER; case CLIENT_MOBILE: return FACEBOOK_CLIENT_MOBILE; case CLIENT_WEB: default: return FACEBOOK_CLIENT_WEB; } } }; struct chatroom_participant { std::string user_id; std::string nick; ParticipantRole role; bool is_former; bool loaded; chatroom_participant() : loaded(false), is_former(false), role(ROLE_NONE) {} }; struct facebook_chatroom { std::string thread_id; std::wstring chat_name; std::map participants; bool can_reply; bool is_archived; bool is_subscribed; bool read_only; facebook_chatroom(std::string thread_id) : thread_id(thread_id) { this->can_reply = true; this->is_archived = false; this->is_subscribed = true; this->read_only = false; } }; struct facebook_message { std::string user_id; std::string message_text; std::string message_id; std::string thread_id; std::string data; time_t time; bool isIncoming; bool isUnread; bool isChat; MessageType type; int flag_; facebook_message() { this->time = 0; this->isUnread = true; this->isIncoming = true; this->isChat = false; this->type = MESSAGE; this->flag_ = 0; } }; struct facebook_notification { std::string user_id; std::string text; std::string link; std::string id; const char *icon; time_t time; bool seen; HWND hWndPopup; facebook_notification() { this->time = 0; this->seen = false; this->hWndPopup = NULL; this->icon = NULL; } void setIcon(const std::string &iconUrl) { if (iconUrl == "https://www.facebook.com/rsrc.php/v3/yj/r/6WffvhOaXGY.png") icon = "like"; else if (iconUrl == "https://www.facebook.com/rsrc.php/v3/y1/r/RvGKklgAefT.png") icon = "love"; else if (iconUrl == "https://www.facebook.com/rsrc.php/v3/yV/r/McJA2ZjdJmf.png") icon = "haha"; else if (iconUrl == "https://www.facebook.com/rsrc.php/v3/yL/r/IfsimazVjj4.png") icon = "wow"; else if (iconUrl == "https://www.facebook.com/rsrc.php/v3/yH/r/jOeSrGlcPLG.png") icon = "sad"; else if (iconUrl == "https://www.facebook.com/rsrc.php/v3/y9/r/6K8v8Ju8kL2.png") icon = "angry"; else icon = NULL; } }; struct facebook_newsfeed { std::string user_id; std::string title; std::string text; std::string link; facebook_newsfeed() {} }; struct send_chat { send_chat(const std::string &chat_id,const std::string &msg) : chat_id(chat_id), msg(msg) {} std::string chat_id; std::string msg; }; struct send_direct { send_direct(MCONTACT hContact,const std::string &msg, int msgid) : hContact(hContact), msg(msg), msgid(msgid) {} MCONTACT hContact; std::string msg; int msgid; }; struct send_typing { send_typing(MCONTACT hContact,const int status) : hContact(hContact), status(status) {} MCONTACT hContact; int status; }; struct popup_data { popup_data(FacebookProto *proto) : proto(proto) {} popup_data(FacebookProto *proto, std::string url) : proto(proto), url(url) {} FacebookProto *proto; std::string url; std::string notification_id; }; struct status_data { status_data() { this->isPage = false; } std::string user_id; std::string text; std::string url; std::string place; std::string privacy; bool isPage; std::vector users; }; struct wall_data { wall_data() { this->title = NULL; this->isPage = false; } wall_data(std::string user_id, wchar_t *title, bool isPage = false) : user_id(user_id), title(title), isPage(isPage) {} std::string user_id; wchar_t *title; bool isPage; }; struct post_status_data { post_status_data(FacebookProto *proto) : proto(proto) {} post_status_data(FacebookProto *proto, wall_data *wall) : proto(proto) { this->walls.push_back(wall); } FacebookProto *proto; std::vector walls; }; struct open_url { open_url(wchar_t *browser, wchar_t *url) : browser(browser), url(url) {} wchar_t *browser; wchar_t *url; };