--- a/libpurple/protocols/jabber/facebook.c Sun May 04 06:28:56 2014 +0530 +++ b/libpurple/protocols/jabber/facebook.c Sat May 10 03:56:36 2014 +0530 @@ -34,22 +34,47 @@ } static void +facebook_login(PurpleAccount *account) +{ + PurpleConnection *gc; + JabberStream *js; + + jabber_login(account); + + gc = purple_account_get_connection(account); + if (!gc) + return; + + purple_connection_set_flags(gc, 0); + + js = purple_connection_get_protocol_data(gc); + if (!js) + return; + + js->server_caps |= JABBER_CAP_FACEBOOK; +} + +static void facebook_protocol_init(PurpleProtocol *protocol) { PurpleAccountUserSplit *split; PurpleAccountOption *option; GList *encryption_values = NULL; - protocol->id = "prpl-facebook-xmpp"; - protocol->name = "Facebook (XMPP)"; + protocol->id = "prpl-facebook-xmpp"; + protocol->name = "Facebook (XMPP)"; + protocol->options = 0; + purple_protocol_override(protocol, PURPLE_PROTOCOL_OVERRIDE_ICON_SPEC); /* Translators: 'domain' is used here in the context of Internet domains, e.g. pidgin.im */ split = purple_account_user_split_new(_("Domain"), "chat.facebook.com", '@'); purple_account_user_split_set_reverse(split, FALSE); + purple_account_user_split_set_constant(split, TRUE); protocol->user_splits = g_list_append(protocol->user_splits, split); split = purple_account_user_split_new(_("Resource"), "", '/'); purple_account_user_split_set_reverse(split, FALSE); + purple_account_user_split_set_constant(split, TRUE); protocol->user_splits = g_list_append(protocol->user_splits, split); #define ADD_VALUE(list, desc, v) { \ @@ -73,44 +98,26 @@ protocol->account_options = g_list_append(protocol->account_options, option); - option = purple_account_option_bool_new( - _("Allow plaintext auth over unencrypted streams"), - "auth_plain_in_clear", FALSE); - protocol->account_options = g_list_append(protocol->account_options, - option); - - option = purple_account_option_int_new(_("Connect port"), "port", 5222); - protocol->account_options = g_list_append(protocol->account_options, - option); - - option = purple_account_option_string_new(_("Connect server"), - "connect_server", NULL); - protocol->account_options = g_list_append(protocol->account_options, - option); - option = purple_account_option_string_new(_("BOSH URL"), "bosh_url", NULL); protocol->account_options = g_list_append(protocol->account_options, option); - - /* this should probably be part of global smiley theme settings later on, - shared with MSN */ - option = purple_account_option_bool_new(_("Show Custom Smileys"), - "custom_smileys", TRUE); - protocol->account_options = g_list_append(protocol->account_options, - option); } static void facebook_protocol_class_init(PurpleProtocolClass *klass) { + klass->login = facebook_login; klass->list_icon = facebook_list_icon; } static void facebook_protocol_client_iface_init(PurpleProtocolClientIface *client_iface) { - client_iface->get_moods = NULL; + client_iface->get_actions = NULL; + client_iface->find_blist_chat = NULL; + client_iface->blist_node_menu = NULL; + client_iface->get_moods = NULL; } static void @@ -118,11 +125,27 @@ { server_iface->register_user = NULL; server_iface->unregister_user = NULL; + server_iface->set_info = NULL; server_iface->add_buddy = NULL; server_iface->remove_buddy = NULL; server_iface->alias_buddy = NULL; server_iface->group_buddy = NULL; server_iface->rename_group = NULL; + server_iface->set_buddy_icon = NULL; +} + +static void +facebook_protocol_chat_iface_init(PurpleProtocolChatIface *chat_iface) +{ + chat_iface->info = NULL; + chat_iface->info_defaults = NULL; + chat_iface->join = NULL; + chat_iface->get_name = NULL; + chat_iface->invite = NULL; + chat_iface->leave = NULL; + chat_iface->send = NULL; + chat_iface->get_user_real_name = NULL; + chat_iface->set_topic = NULL; } static void @@ -133,6 +156,13 @@ } static void +facebook_protocol_roomlist_iface_init(PurpleProtocolRoomlistIface *roomlist_iface) +{ + roomlist_iface->get_list = NULL; + roomlist_iface->cancel = NULL; +} + +static void facebook_protocol_attention_iface_init(PurpleProtocolAttentionIface *attention_iface) { attention_iface->send = NULL; @@ -163,9 +193,15 @@ PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_SERVER_IFACE, facebook_protocol_server_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CHAT_IFACE, + facebook_protocol_chat_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_PRIVACY_IFACE, facebook_protocol_privacy_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ROOMLIST_IFACE, + facebook_protocol_roomlist_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ATTENTION_IFACE, facebook_protocol_attention_iface_init)