libpurple/protocols/facebook/api.h

changeset 42187
fc241db9162d
parent 42186
637ba5491231
child 42188
04c0398f1046
--- a/libpurple/protocols/facebook/api.h	Wed Mar 29 23:21:45 2023 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1002 +0,0 @@
-/* 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 PURPLE_FACEBOOK_API_H
-#define PURPLE_FACEBOOK_API_H
-
-#include <glib.h>
-
-#include <purple.h>
-
-#include "http.h"
-#include "id.h"
-#include "mqtt.h"
-
-#define FB_TYPE_API  fb_api_get_type()
-
-/**
- * FB_API_AHOST:
- *
- * The HTTP host for the Facebook API.
- */
-#define FB_API_AHOST  "https://api.facebook.com"
-
-/**
- * FB_API_BHOST:
- *
- * The HTTP host for the Facebook BAPI.
- */
-#define FB_API_BHOST  "https://b-api.facebook.com"
-
-/**
- * FB_API_GHOST:
- *
- * The HTTP host for the Facebook Graph API.
- */
-#define FB_API_GHOST  "https://graph.facebook.com"
-
-/**
- * FB_API_WHOST:
- *
- * The HTTP host for the Facebook website.
- */
-#define FB_API_WHOST  "https://www.facebook.com"
-
-/**
- * FB_API_FBRPC_PREFIX
- *
- * The fbrpc URL prefix used in links shared from the mobile app.
- */
-#define FB_API_FBRPC_PREFIX "fbrpc://facebook/nativethirdparty"
-
-/**
- * FB_API_KEY:
- *
- * The Facebook API key.
- */
-#define FB_API_KEY  "256002347743983"
-
-/**
- * FB_API_SECRET:
- *
- * The Facebook API secret.
- */
-#define FB_API_SECRET  "374e60f8b9bb6b8cbb30f78030438895"
-
-/**
- * FB_ORCA_AGENT
- *
- * The part of the user agent that looks like the official client, since the
- * server started checking this.
- */
-
-#define FB_ORCA_AGENT "[FBAN/Orca-Android;FBAV/537.0.0.31.101;FBPN/com.facebook.orca;FBLC/en_US;FBBV/52182662]"
-
-/**
- * FB_API_AGENT:
- *
- * The HTTP User-Agent header.
- */
-#define FB_API_AGENT  "Facebook plugin / Purple / 0.9.5 " FB_ORCA_AGENT
-
-/**
- * FB_API_MQTT_AGENT
- *
- * The client information string sent in the MQTT CONNECT message
- */
-
-#define FB_API_MQTT_AGENT FB_API_AGENT
-
-/**
- * FB_API_URL_ATTACH:
- *
- * The URL for attachment URL requests.
- */
-#define FB_API_URL_ATTACH  FB_API_AHOST "/method/messaging.getAttachment"
-//#define FB_API_URL_ATTACH  FB_API_AHOST "/method/messaging.attachmentRedirect"
-
-/**
- * FB_API_URL_AUTH:
- *
- * The URL for authentication requests.
- */
-#define FB_API_URL_AUTH  FB_API_BHOST "/method/auth.login"
-
-/**
- * FB_API_URL_GQL:
- *
- * The URL for GraphQL requests.
- */
-#define FB_API_URL_GQL  FB_API_GHOST "/graphql"
-
-/**
- * FB_API_URL_MESSAGES:
- *
- * The URL for linking message threads.
- */
-#define FB_API_URL_MESSAGES  FB_API_WHOST "/messages"
-
-/**
- * FB_API_URL_PARTS:
- *
- * The URL for participant management requests.
- */
-#define FB_API_URL_PARTS  FB_API_GHOST "/participants"
-
-/**
- * FB_API_URL_THREADS:
- *
- * The URL for thread management requests.
- */
-#define FB_API_URL_THREADS  FB_API_GHOST "/me/group_threads"
-
-/**
- * FB_API_URL_TOPIC:
- *
- * The URL for thread topic requests.
- */
-#define FB_API_URL_TOPIC  FB_API_AHOST "/method/messaging.setthreadname"
-
-/**
- * FB_API_QUERY_CONTACT:
- *
- * The query hash for the `UsersQuery`.
- *
- * Key mapping:
- *   0: user_fbids
- *   1: include_full_user_info
- *   2: profile_pic_large_size
- *   3: profile_pic_medium_size
- *   4: profile_pic_small_size
- */
-#define FB_API_QUERY_CONTACT  10153915107411729
-
-/**
- * FB_API_QUERY_CONTACTS:
- *
- * The query hash for the `FetchContactsFullQuery`.
- *
- * Key mapping:
- *   0: profile_types
- *   1: limit
- *   2: big_img_size
- *   3: huge_img_size
- *   4: small_img_size
- */
-#define FB_API_QUERY_CONTACTS  10154444360806729
-
-/**
- * FB_API_QUERY_CONTACTS_AFTER:
- *
- * The query hash for the `FetchContactsFullWithAfterQuery`.
- *
- * Key mapping:
- *   0: profile_types
- *   1: after
- *   2: limit
- *   3: big_img_size
- *   4: huge_img_size
- *   5: small_img_size
- */
-#define FB_API_QUERY_CONTACTS_AFTER  10154444360816729
-
-
-/**
- * FB_API_QUERY_CONTACTS_DELTA:
- *
- * The query hash for the `FetchContactsDeltaQuery`.
- *
- * Key mapping:
- *   0: after
- *   1: profile_types
- *   2: limit
- *   3: big_img_size
- *   4: huge_img_size
- *   5: small_img_size
- */
-#define FB_API_QUERY_CONTACTS_DELTA  10154444360801729
-
-/**
- * FB_API_QUERY_STICKER:
- *
- * The query hash for the `FetchStickersWithPreviewsQuery`.
- *
- * Key mapping:
- *   0: sticker_ids
- *   1: media_type
- *   2: preview_size
- *   3: scaling_factor
- *   4: animated_media_type
- */
-#define FB_API_QUERY_STICKER  10152877994321729
-
-/**
- * FB_API_QUERY_THREAD:
- *
- * The query hash for the `ThreadQuery`.
- *
- * Key mapping:
- *   0: thread_ids
- *   1: verification_type
- *   2: hash_key
- *   3: small_preview_size
- *   4: large_preview_size
- *   5: item_count
- *   6: event_count
- *   7: full_screen_height
- *   8: full_screen_width
- *   9: medium_preview_size
- *   10: fetch_users_separately
- *   11: include_message_info
- *   12: msg_count
- *   13: include_full_user_info
- *   14: profile_pic_large_size
- *   15: profile_pic_medium_size
- *   16: profile_pic_small_size
- */
-#define FB_API_QUERY_THREAD  10153919752036729
-
-/**
- * FB_API_QUERY_THREADS:
- *
- * The query hash for the `ThreadListQuery`.
- *
- * Key mapping:
- *   0: folder_tag
- *   1: thread_count
- *   2: include_thread_info
- *   3: verification_type
- *   4: hash_key
- *   5: small_preview_size
- *   6: large_preview_size
- *   7: item_count
- *   8: event_count
- *   9: full_screen_height
- *   10: full_screen_width
- *   11: medium_preview_size
- *   12: fetch_users_separately
- *   13: include_message_info
- *   14: msg_count
- *   15: UNKNOWN
- *   16: profile_pic_large_size
- *   17: profile_pic_medium_size
- *   18: profile_pic_small_size
- */
-#define FB_API_QUERY_THREADS  10153919752026729
-
-/**
- * FB_API_QUERY_SEQ_ID:
- *
- * A variant of ThreadListQuery with sequence ID
- *
- * TODO: parameters.
- */
-
-#define FB_API_QUERY_SEQ_ID  10155268192741729
-
-/**
- * FB_API_QUERY_XMA:
- *
- * The query hash for the `XMAQuery`.
- *
- * Key mapping:
- *   0: xma_id
- */
-#define FB_API_QUERY_XMA  10153919431161729
-
-/**
- * FB_API_CONTACTS_COUNT:
- *
- * The maximum amount of contacts to fetch in a single request. If this
- * value is set too high, HTTP request will fail. This is due to the
- * request data being too large.
- */
-#define FB_API_CONTACTS_COUNT  500
-
-/**
- * FB_API_TCHK:
- * @e: The expression.
- *
- * Checks the Thrift related expression to ensure that it evaluates to
- * #TRUE. If the expression evaluates to #FALSE, a #GError is assigned
- * to the local `error` variable, then returns with no value.
- *
- * This macro is meant to only be used for Thrift related expressions,
- * where the calling function has a `void` return type. This macro also
- * requires the existence of a predefined `error` variable, which is a
- * pointer of a pointer to a #GError.
- */
-#define FB_API_TCHK(e) \
-	G_STMT_START { \
-		if (G_UNLIKELY(!(e))) { \
-			g_set_error(error, FB_API_ERROR, FB_API_ERROR_GENERAL, \
-						"Failed to read thrift: %s:%d " \
-						"%s: assertion '%s' failed", \
-						__FILE__, __LINE__, G_STRFUNC, #e); \
-			return; \
-		} \
-	} G_STMT_END
-
-/**
- * FB_API_MSGID:
- * @m: The time in milliseconds.
- * @i: The random integer.
- *
- * Creates a 64-bit message identifier in the Facebook format.
- *
- * Returns: The message identifier.
- */
-#define FB_API_MSGID(m, i) ((guint64) ( \
-		(((guint32) i) & 0x3FFFFF) | \
-		(((guint64) m) << 22) \
-	))
-
-/**
- * FB_API_ERROR_EMIT:
- * @a: The #FbApi.
- * @e: The #FbApiError.
- * @c: The code to execute.
- *
- * Emits a #GError on behalf of the #FbApi.
- */
-#define FB_API_ERROR_EMIT(a, e, c) \
-	G_STMT_START { \
-		if (G_UNLIKELY((e) != NULL)) { \
-			fb_api_error_emit(a, e); \
-			{c;} \
-		} \
-	} G_STMT_END
-
-/**
- * FB_API_ERROR:
- *
- * The #GQuark of the domain of API errors.
- */
-#define FB_API_ERROR  fb_api_error_quark()
-
-typedef struct _FbApiEvent FbApiEvent;
-typedef struct _FbApiMessage FbApiMessage;
-typedef struct _FbApiPresence FbApiPresence;
-typedef struct _FbApiThread FbApiThread;
-typedef struct _FbApiTyping FbApiTyping;
-typedef struct _FbApiUser FbApiUser;
-
-/**
- * FbApiError:
- * @FB_API_ERROR_GENERAL: General failure.
- * @FB_API_ERROR_AUTH: Authentication failure.
- * @FB_API_ERROR_QUEUE: Queue failure.
- * @FB_API_ERROR_NONFATAL: Other non-fatal errors.
- *
- * The error codes for the #FB_API_ERROR domain.
- */
-typedef enum
-{
-	FB_API_ERROR_GENERAL,
-	FB_API_ERROR_AUTH,
-	FB_API_ERROR_QUEUE,
-	FB_API_ERROR_NONFATAL
-} FbApiError;
-
-/**
- * FbApiEventType:
- * @FB_API_EVENT_TYPE_THREAD_TOPIC: The thread topic was changed.
- * @FB_API_EVENT_TYPE_THREAD_USER_ADDED: A thread user was added.
- * @FB_API_EVENT_TYPE_THREAD_USER_REMOVED: A thread user was removed.
- *
- * The #FbApiEvent types.
- */
-typedef enum
-{
-	FB_API_EVENT_TYPE_THREAD_TOPIC,
-	FB_API_EVENT_TYPE_THREAD_USER_ADDED,
-	FB_API_EVENT_TYPE_THREAD_USER_REMOVED
-} FbApiEventType;
-
-/**
- * FbApiMessageFlags:
- * @FB_API_MESSAGE_FLAG_DONE: The text has been processed.
- * @FB_API_MESSAGE_FLAG_IMAGE: The text is a URL to an image.
- * @FB_API_MESSAGE_FLAG_SELF: The text is from the #FbApi user.
- *
- * The #FbApiMessage flags.
- */
-typedef enum
-{
-	FB_API_MESSAGE_FLAG_DONE = 1 << 0,
-	FB_API_MESSAGE_FLAG_IMAGE = 1 << 1,
-	FB_API_MESSAGE_FLAG_SELF = 1 << 2
-} FbApiMessageFlags;
-
-#define FB_TYPE_API_EVENT (fb_api_event_get_type())
-
-/**
- * FbApiEvent:
- * @type: The #FbApiEventType.
- * @uid: The user #FbId.
- * @tid: The thread #FbId.
- * @text: The event text.
- *
- * Represents a Facebook update event.
- */
-struct _FbApiEvent
-{
-	FbApiEventType type;
-	FbId uid;
-	FbId tid;
-	gchar *text;
-};
-
-#define FB_TYPE_API_MESSAGE (fb_api_message_get_type())
-
-/**
- * FbApiMessage:
- * @flags: The #FbApiMessageFlags.
- * @uid: The user #FbId.
- * @tid: The thread #FbId.
- * @tstamp: The timestamp in milliseconds (UTC).
- * @text: The message text.
- *
- * Represents a Facebook user message.
- */
-struct _FbApiMessage
-{
-	FbApiMessageFlags flags;
-	FbId uid;
-	FbId tid;
-	gint64 tstamp;
-	gchar *text;
-};
-
-#define FB_TYPE_API_PRESENCE (fb_api_presence_get_type())
-
-/**
- * FbApiPresence:
- * @uid: The user #FbId.
- * @active: #TRUE if the user is active, otherwise #FALSE.
- *
- * Represents a Facebook presence message.
- */
-struct _FbApiPresence
-{
-	FbId uid;
-	gboolean active;
-};
-
-#define FB_TYPE_API_THREAD (fb_api_thread_get_type())
-
-/**
- * FbApiThread:
- * @tid: The thread #FbId.
- * @topic: The topic.
- * @users: The #GSList of #FbApiUser's.
- *
- * Represents a Facebook message thread.
- */
-struct _FbApiThread
-{
-	FbId tid;
-	gchar *topic;
-	GSList *users;
-};
-
-#define FB_TYPE_API_TYPING (fb_api_typing_get_type())
-
-/**
- * FbApiTyping:
- * @uid: The user #FbId.
- * @state: #TRUE if the user is typing, otherwise #FALSE.
- *
- * Represents a Facebook typing message.
- */
-struct _FbApiTyping
-{
-	FbId uid;
-	gboolean state;
-};
-
-#define FB_TYPE_API_USER (fb_api_user_get_type())
-
-/**
- * FbApiUser:
- * @uid: The user #FbId.
- * @name: The name of the user.
- * @icon: The icon URL.
- * @csum: The checksum of @icon.
- *
- * Represents a Facebook user.
- */
-struct _FbApiUser
-{
-	FbId uid;
-	gchar *name;
-	gchar *icon;
-	gchar *csum;
-};
-
-G_DECLARE_FINAL_TYPE(FbApi, fb_api, FB, API, GObject)
-
-/**
- * fb_api_error_quark:
- *
- * Gets the #GQuark of the domain of API errors.
- *
- * Returns: The #GQuark of the domain.
- */
-GQuark
-fb_api_error_quark(void);
-
-/**
- * fb_api_new:
- * @gc: The #PurpleConnection.
- * @resolver: The proxy resolver to use from the account.
- *
- * Creates a new #FbApi. The returned #FbApi should be freed with
- * #g_object_unref() when no longer needed.
- *
- * Returns: The new #FbApi.
- */
-FbApi *fb_api_new(PurpleConnection *gc, GProxyResolver *resolver);
-
-/**
- * fb_api_rehash:
- * @api: The #FbApi.
- *
- * Rehashes and updates internal data of the #FbApi. This should be
- * called whenever properties are modified.
- */
-void
-fb_api_rehash(FbApi *api);
-
-/**
- * fb_api_is_invisible:
- * @api: The #FbApi.
- *
- * Determines if the user of the #FbApi is invisible.
- *
- * Returns: #TRUE if the #FbApi user is invisible, otherwise #FALSE.
- */
-gboolean
-fb_api_is_invisible(FbApi *api);
-
-/**
- * fb_api_error:
- * @api: The #FbApi.
- * @error: The #FbApiError.
- * @format: The format string literal.
- * @...: The arguments for @format.
- *
- * Emits an #FbApiError.
- */
-void
-fb_api_error(FbApi *api, FbApiError error, const gchar *format, ...)
-             G_GNUC_PRINTF(3, 4);
-
-/**
- * fb_api_error_emit:
- * @api: The #FbApi.
- * @error: The #GError.
- *
- * Emits a #GError on an #FbApiError.
- */
-void
-fb_api_error_emit(FbApi *api, GError *error);
-
-/**
- * fb_api_auth:
- * @api: The #FbApi.
- * @user: The Facebook user name, email, or phone number.
- * @pass: The Facebook password.
- *
- * Sends an authentication request to Facebook. This will obtain
- * session information, which is required for all other requests.
- */
-void
-fb_api_auth(FbApi *api, const gchar *user, const gchar *pass);
-
-/**
- * fb_api_contact:
- * @api: The #FbApi.
- * @uid: The user #FbId.
- *
- * Sends a contact request. This will obtain the general information of
- * a single contact.
- */
-void
-fb_api_contact(FbApi *api, FbId uid);
-
-/**
- * fb_api_contacts:
- * @api: The #FbApi.
- *
- * Sends a contacts request. This will obtain a full list of detailed
- * contact information about the friends of the #FbApi user.
- */
-void
-fb_api_contacts(FbApi *api);
-
-/**
- * fb_api_connect:
- * @api: The #FbApi.
- * @invisible: #TRUE to make the user invisible, otherwise #FALSE.
- *
- * Initializes and establishes the underlying MQTT connection.
- */
-void
-fb_api_connect(FbApi *api, gboolean invisible);
-
-/**
- * fb_api_disconnect:
- * @api: The #FbApi.
- *
- * Closes the underlying MQTT connection.
- */
-void
-fb_api_disconnect(FbApi *api);
-
-/**
- * fb_api_message:
- * @api: The #FbApi.
- * @id: The user or thread #FbId.
- * @thread: #TRUE if @id is a thread, otherwise #FALSE.
- * @text: The message text.
- *
- * Sends a message as the user of the #FbApi to a user or a thread.
- */
-void
-fb_api_message(FbApi *api, FbId id, gboolean thread, const gchar *text);
-
-/**
- * fb_api_publish:
- * @api: The #FbApi.
- * @topic: The topic.
- * @format: The format string literal.
- * @...: The arguments for @format.
- *
- * Publishes an MQTT message.
- */
-void
-fb_api_publish(FbApi *api, const gchar *topic, const gchar *format, ...)
-               G_GNUC_PRINTF(3, 4);
-
-/**
- * fb_api_read:
- * @api: The #FbApi.
- * @id: The user or thread #FbId.
- * @thread: #TRUE if @id is a thread, otherwise #FALSE.
- *
- * Marks a message thread as read.
- */
-void
-fb_api_read(FbApi *api, FbId id, gboolean thread);
-
-/**
- * fb_api_unread:
- * @api: The #FbApi.
- *
- * Sends an unread message request.
- */
-void
-fb_api_unread(FbApi *api);
-
-/**
- * fb_api_thread:
- * @api: The #FbApi.
- * @tid: The thread #FbId.
- *
- * Sends a thread request. This will obtain the general information of
- * a single thread.
- */
-void
-fb_api_thread(FbApi *api, FbId tid);
-
-/**
- * fb_api_thread_create:
- * @api: The #FbApi.
- * @uids: (element-type FbId): The #GSList of #FbId's.
- *
- * Sends a thread creation request. In order to create a thread, there
- * must be at least two other users in @uids.
- */
-void
-fb_api_thread_create(FbApi *api, GSList *uids);
-
-/**
- * fb_api_thread_invite:
- * @api: The #FbApi.
- * @tid: The thread #FbId.
- * @uid: The user #FbId.
- *
- * Sends a thread user invitation request.
- */
-void
-fb_api_thread_invite(FbApi *api, FbId tid, FbId uid);
-
-/**
- * fb_api_thread_remove:
- * @api: The #FbApi.
- * @tid: The thread #FbId.
- * @uid: The user #FbId.
- *
- * Sends a thread user removal request.
- */
-void
-fb_api_thread_remove(FbApi *api, FbId tid, FbId uid);
-
-/**
- * fb_api_thread_topic:
- * @api: The #FbApi.
- * @tid: The thread #FbId.
- * @topic: The topic.
- *
- * Sends a thread topic change request.
- */
-void
-fb_api_thread_topic(FbApi *api, FbId tid, const gchar *topic);
-
-/**
- * fb_api_threads:
- * @api: The #FbApi.
- *
- * Sends a threads request. This will obtain a full list of detailed
- * thread information about the threads of the #FbApi user.
- */
-void
-fb_api_threads(FbApi *api);
-
-/**
- * fb_api_typing:
- * @api: The #FbApi.
- * @uid: The user #FbId.
- * @state: #TRUE if the #FbApi user is typing, otherwise #FALSE.
- *
- * Sends a typing state message for the user of the #FbApi.
- */
-void
-fb_api_typing(FbApi *api, FbId uid, gboolean state);
-
-/**
- * fb_api_event_get_type:
- *
- * Returns: The #GType for the #FbApiEvent boxed structure.
- */
-GType fb_api_event_get_type(void);
-
-/**
- * fb_api_event_dup:
- * @event: The #FbApiEvent or #NULL.
- *
- * Duplicates an #FbApiEvent. The returned #FbApiEvent should be freed with
- * #fb_api_event_free() when no longer needed.
- *
- * Returns: The new #FbApiEvent.
- */
-FbApiEvent *
-fb_api_event_dup(const FbApiEvent *event);
-
-/**
- * fb_api_event_reset:
- * @event: The #FbApiEvent.
- * @deep: #TRUE to free allocated data, otherwise #FALSE.
- *
- * Resets an #FbApiEvent.
- */
-void
-fb_api_event_reset(FbApiEvent *event, gboolean deep);
-
-/**
- * fb_api_event_free:
- * @event: The #FbApiEvent.
- *
- * Frees all memory used by the #FbApiEvent.
- */
-void
-fb_api_event_free(FbApiEvent *event);
-
-/**
- * fb_api_message_get_type:
- *
- * Returns: The #GType for the #FbApiMessage boxed structure.
- */
-GType fb_api_message_get_type(void);
-
-/**
- * fb_api_message_dup:
- * @msg: The #FbApiMessage or #NULL.
- *
- * Duplicates an #FbApiMessage. The returned #FbApiMessage should be freed with
- * #fb_api_message_free() when no longer needed.
- *
- * Returns: The new #FbApiMessage.
- */
-FbApiMessage *
-fb_api_message_dup(const FbApiMessage *msg);
-
-/**
- * fb_api_message_reset:
- * @msg: The #FbApiMessage.
- * @deep: #TRUE to free allocated data, otherwise #FALSE.
- *
- * Resets an #FbApiMessage.
- */
-void
-fb_api_message_reset(FbApiMessage *msg, gboolean deep);
-
-/**
- * fb_api_message_free:
- * @msg: The #FbApiMessage.
- *
- * Frees all memory used by the #FbApiMessage.
- */
-void
-fb_api_message_free(FbApiMessage *msg);
-
-/**
- * fb_api_presence_get_type:
- *
- * Returns: The #GType for the #FbApiPresence boxed structure.
- */
-GType fb_api_presence_get_type(void);
-
-/**
- * fb_api_presence_dup:
- * @presence: The #FbApiPresence or %NULL.
- *
- * Duplicates an #FbApiPresence. The returned #FbApiPresence should be freed
- * with #fb_api_presence_free() when no longer needed.
- *
- * Returns: The new #FbApiPresence.
- */
-FbApiPresence *
-fb_api_presence_dup(const FbApiPresence *presence);
-
-/**
- * fb_api_presence_reset:
- * @presence: The #FbApiPresence.
- *
- * Resets an #FbApiPresence.
- */
-void
-fb_api_presence_reset(FbApiPresence *presence);
-
-/**
- * fb_api_presence_free:
- * @presence: The #FbApiPresence.
- *
- * Frees all memory used by the #FbApiPresence.
- */
-void
-fb_api_presence_free(FbApiPresence *presence);
-
-/**
- * fb_api_thread_get_type:
- *
- * Returns: The #GType for the #FbApiThread boxed structure.
- */
-GType fb_api_thread_get_type(void);
-
-/**
- * fb_api_thread_dup:
- * @thrd: The #FbApiThread or #NULL.
- *
- * Duplicates an #FbApiThread. The returned #FbApiThread should be freed with
- * #fb_api_thread_free() when no longer needed.
- *
- * Returns: The new #FbApiThread.
- */
-FbApiThread *
-fb_api_thread_dup(const FbApiThread *thrd);
-
-/**
- * fb_api_thread_reset:
- * @thrd: The #FbApiThread.
- * @deep: #TRUE to free allocated data, otherwise #FALSE.
- *
- * Resets an #FbApiThread.
- */
-void
-fb_api_thread_reset(FbApiThread *thrd, gboolean deep);
-
-/**
- * fb_api_thread_free:
- * @thrd: The #FbApiThread.
- *
- * Frees all memory used by the #FbApiThread.
- */
-void
-fb_api_thread_free(FbApiThread *thrd);
-
-/**
- * fb_api_typing_get_type:
- *
- * Returns: The #GType for the #FbApiTyping boxed structure.
- */
-GType fb_api_typing_get_type(void);
-
-/**
- * fb_api_typing_dup:
- * @typg: The #FbApiTyping or #NULL.
- *
- * Duplicates an #FbApiTyping. The returned #FbApiTyping should be freed with
- * #fb_api_typing_free() when no longer needed.
- *
- * Returns: The new #FbApiTyping.
- */
-FbApiTyping *
-fb_api_typing_dup(const FbApiTyping *typg);
-
-/**
- * fb_api_typing_reset:
- * @typg: The #FbApiTyping.
- *
- * Resets an #FbApiTyping.
- */
-void
-fb_api_typing_reset(FbApiTyping *typg);
-
-/**
- * fb_api_typing_free:
- * @typg: The #FbApiTyping.
- *
- * Frees all memory used by the #FbApiTyping.
- */
-void
-fb_api_typing_free(FbApiTyping *typg);
-
-/**
- * fb_api_user_get_type:
- *
- * Returns: The #GType for the #FbApiUser boxed structure.
- */
-GType fb_api_user_get_type(void);
-
-/**
- * fb_api_user_dup:
- * @user: The #FbApiUser or #NULL.
- *
- * Duplicates an #FbApiUser. The returned #FbApiUser should be freed with
- * #fb_api_user_free() when no longer needed.
- *
- * Returns: The new #FbApiUser.
- */
-FbApiUser *
-fb_api_user_dup(const FbApiUser *user);
-
-/**
- * fb_api_user_reset:
- * @user: The #FbApiUser.
- * @deep: #TRUE to free allocated data, otherwise #FALSE.
- *
- * Resets an #FbApiUser.
- */
-void
-fb_api_user_reset(FbApiUser *user, gboolean deep);
-
-/**
- * fb_api_user_free:
- * @user: The #FbApiUser.
- *
- * Frees all memory used by the #FbApiUser.
- */
-void
-fb_api_user_free(FbApiUser *user);
-
-#endif /* PURPLE_FACEBOOK_API_H */

mercurial