/soc/2015/nakulgulati/main: 932936a91ad5: Initial Hangouts proto...
Nakul Gulati <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 932936a91ad54ac460c955a772aad3fd239f3717 Author: Nakul Gulati <[email protected]> Date: 2015-06-08 15:59 +0800 Branch: default URL: https://hg.pidgin.im/soc/2015/nakulgulati/main/rev/932936a91ad5 Description: Initial Hangouts protocol. diffstat: libpurple/protocols/hangouts/hangouts.c | 161 ++++++++++++++++++++++++++++++++ libpurple/protocols/hangouts/hangouts.h | 52 ++++++++++ 2 files changed, 213 insertions(+), 0 deletions(-) diffs (225 lines): diff --git a/libpurple/protocols/hangouts/hangouts.c b/libpurple/protocols/hangouts/hangouts.c new file mode 100644 --- /dev/null +++ b/libpurple/protocols/hangouts/hangouts.c @@ -0,0 +1,161 @@ +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#include "internal.h" + +#include "account.h" +#include "connection.h" +#include "plugins.h" +#include "protocol.h" +#include "protocols.h" +#include "roomlist.h" +#include "version.h" + +#include "hangouts.h" + +static PurpleProtocol *my_protocol = NULL; + +static void +hangouts_login(PurpleAccount *acct) +{ + +} + +static void +hangouts_close(PurpleConnection *gc) +{ + +} + +static GList * +hangouts_status_types(PurpleAccount *acct) +{ + return NULL; +} + +static const char * +hangouts_list_icon(PurpleAccount *account, PurpleBuddy *buddy) +{ + return "hangouts"; +} + +static void +hangouts_protocol_init(PurpleProtocol *protocol) +{ + protocol->id = "prpl-hangouts"; + protocol->name = "Hangouts"; +} + +static void +hangouts_protocol_class_init(PurpleProtocolClass *klass) +{ + klass->login = fb_login; + klass->close = fb_close; + klass->status_types = fb_status_types; + klass->list_icon = fb_list_icon; +} + +static void +hangouts_protocol_client_iface_init(PurpleProtocolClientIface *client_iface) +{ + +} + +static void +hangouts_protocol_server_iface_init(PurpleProtocolServerIface *server_iface) +{ + +} + +static void +hangouts_protocol_im_iface_init(PurpleProtocolIMIface *im_iface) +{ + +} + +static void +hangouts_protocol_chat_iface_init(PurpleProtocolChatIface *chat_iface) +{ + +} + +static void +hangouts_protocol_privacy_iface_init(PurpleProtocolPrivacyIface *privacy_iface) +{ + +} + +static void +hangouts_protocol_roomlist_iface_init(PurpleProtocolRoomlistIface *roomlist_iface) +{ + +} + +PURPLE_DEFINE_TYPE_EXTENDED( + HangoutsProtocol, hangouts_protocol, PURPLE_TYPE_PROTOCOL, 0, + + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CLIENT_IFACE, + hangouts_protocol_client_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_SERVER_IFACE, + hangouts_protocol_server_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_IM_IFACE, + hangouts_protocol_im_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_CHAT_IFACE, + hangouts_protocol_chat_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_PRIVACY_IFACE, + hangouts_protocol_privacy_iface_init) + PURPLE_IMPLEMENT_INTERFACE_STATIC(PURPLE_TYPE_PROTOCOL_ROOMLIST_IFACE, + hangouts_protocol_roomlist_iface_init) +); + +static PurplePluginInfo * +plugin_query(GError **error) +{ + return purple_plugin_info_new( + "id", "prpl-hangouts", + "name", "Hangouts Protocol", + "version", DISPLAY_VERSION, + "category", N_("Protocol"), + "summary", N_("Hangouts Protocol Plugin"), + "description", N_("Hangouts Protocol Plugin"), + "website", PURPLE_WEBSITE, + "abi-version", PURPLE_ABI_VERSION, + "flags", PURPLE_PLUGIN_INFO_FLAGS_INTERNAL | + PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD, + NULL + ); +} + +static gboolean +plugin_load(PurplePlugin *plugin, GError **error) +{ + hangouts_protocol_register_type(plugin); + my_protocol = purple_protocols_add(HANGOUTS_TYPE_PROTOCOL, error); + return my_protocol != NULL; +} + +static gboolean +plugin_unload(PurplePlugin *plugin, GError **error) +{ + return purple_protocols_remove(my_protocol, error); +} + +PURPLE_PLUGIN_INIT(hangouts, plugin_query, plugin_load, plugin_unload); \ No newline at end of file diff --git a/libpurple/protocols/hangouts/hangouts.h b/libpurple/protocols/hangouts/hangouts.h new file mode 100644 --- /dev/null +++ b/libpurple/protocols/hangouts/hangouts.h @@ -0,0 +1,52 @@ +/* purple + * + * Purple is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * 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, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA + */ + +#ifndef _HANGOUTS_H_ +#define _HANGOUTS_H_ + +#include "protocol.h" + +#define HANGOUTS_TYPE_PROTOCOL (hangouts_protocol_get_type()) +#define HANGOUTS_PROTOCOL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), HANGOUTS_TYPE_PROTOCOL, HangoutsProtocol)) +#define HANGOUTS_PROTOCOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), HANGOUTS_TYPE_PROTOCOL, HangoutsProtocolClass)) +#define HANGOUTS_IS_PROTOCOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), HANGOUTS_TYPE_PROTOCOL)) +#define HANGOUTS_IS_PROTOCOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), HANGOUTS_TYPE_PROTOCOL)) +#define HANGOUTS_PROTOCOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), HANGOUTS_TYPE_PROTOCOL, HangoutsProtocolClass)) + +typedef struct _HangoutsProtocol HangoutsProtocol; +typedef struct _HangoutsProtocolClass HangoutsProtocolClass; + +struct _HangoutsProtocol +{ + PurpleProtocol parent; +}; + +struct _HangoutsProtocolClass +{ + PurpleProtocolClass parent_class; +}; + +/** + * Returns the GType for the HangoutsProtocol object. + */ +G_MODULE_EXPORT GType hangouts_protocol_get_type(void); + +#endif /* _HANGOUTS_H_ */ \ No newline at end of file