2015-12-10 12:54:15 +00:00
|
|
|
/*
|
|
|
|
* This file is part of matrix-glib-sdk
|
|
|
|
*
|
|
|
|
* matrix-glib-sdk is free software: you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation, either
|
|
|
|
* version 3 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* matrix-glib-sdk 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 Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with matrix-glib-sdk. If not, see
|
|
|
|
* <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
2015-12-11 13:15:42 +00:00
|
|
|
#ifndef __MATRIX_API_IFACE_H__
|
|
|
|
#define __MATRIX_API_IFACE_H__
|
2015-12-10 12:54:15 +00:00
|
|
|
|
|
|
|
#include <glib-object.h>
|
2015-12-11 13:15:42 +00:00
|
|
|
#include <json-glib/json-glib.h>
|
2015-12-10 12:54:15 +00:00
|
|
|
|
|
|
|
G_BEGIN_DECLS
|
|
|
|
|
|
|
|
#define MATRIX_TYPE_API (matrix_api_get_type())
|
|
|
|
#define MATRIX_API(o) (G_TYPE_CHECK_INSTANCE_CAST((o), MATRIX_TYPE_API, MatrixAPI))
|
|
|
|
#define MATRIX_IS_API(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), MATRIX_TYPE_API))
|
2015-12-11 13:15:42 +00:00
|
|
|
#define MATRIX_API_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), MATRIX_TYPE_API, MatrixAPIInterface))
|
2015-12-10 12:54:15 +00:00
|
|
|
|
2015-12-11 13:15:42 +00:00
|
|
|
typedef struct _MatrixAPIInterface MatrixAPIInterface;
|
|
|
|
typedef struct _MatrixAPI MatrixAPI;
|
2015-12-10 12:54:15 +00:00
|
|
|
|
2015-12-15 10:09:51 +00:00
|
|
|
typedef void (*MatrixAPICallback)(MatrixAPI *api,
|
|
|
|
JsonNode *content,
|
|
|
|
gpointer data,
|
|
|
|
GError **err);
|
2015-12-10 12:54:15 +00:00
|
|
|
|
2015-12-11 13:15:42 +00:00
|
|
|
struct _MatrixAPIInterface {
|
|
|
|
/*< private >*/
|
|
|
|
GTypeInterface g_iface;
|
2015-12-10 12:54:15 +00:00
|
|
|
|
2015-12-11 13:15:42 +00:00
|
|
|
/*< public >*/
|
2015-12-10 12:54:15 +00:00
|
|
|
|
2015-12-11 13:15:42 +00:00
|
|
|
void (*register_account)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *login_type,
|
|
|
|
GHashTable *parameters);
|
|
|
|
void (*login)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *login_type,
|
|
|
|
GHashTable *parameters);
|
|
|
|
void (*initial_sync)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
guint limit);
|
|
|
|
void (*event_stream)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *from_token,
|
|
|
|
gulong timeout);
|
|
|
|
void (*create_room)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-15 08:27:11 +00:00
|
|
|
gchar *alias,
|
2015-12-11 13:15:42 +00:00
|
|
|
gboolean is_public,
|
|
|
|
GStrv invitees);
|
|
|
|
void (*join_room)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id_or_alias);
|
|
|
|
void (*send_state_event)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *event_type,
|
|
|
|
JsonNode *content,
|
|
|
|
gchar *state_key);
|
|
|
|
void (*send_message_event)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *event_type,
|
2015-12-14 14:59:35 +00:00
|
|
|
JsonNode *content);
|
2015-12-11 13:15:42 +00:00
|
|
|
void (*send_message)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *text_content,
|
|
|
|
gchar *msg_type);
|
|
|
|
void (*send_emote)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *text_content);
|
|
|
|
void (*get_room_name)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
|
|
|
void (*get_room_topic)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
|
|
|
void (*leave_room)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
|
|
|
void (*invite_user)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id);
|
|
|
|
void (*kick_user)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id,
|
|
|
|
gchar *reason);
|
|
|
|
void (*set_membership)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id,
|
|
|
|
gchar *membership,
|
|
|
|
gchar *reason);
|
|
|
|
void (*ban_user)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id,
|
|
|
|
gchar *reason);
|
|
|
|
void (*get_room_state)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
|
|
|
void (*get_text_body)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *text,
|
|
|
|
gchar *msgtype);
|
|
|
|
void (*get_html_body)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *html,
|
|
|
|
gchar *msgtype);
|
|
|
|
void (*get_emote_body)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *text);
|
|
|
|
void (*_send)(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *method,
|
|
|
|
gchar *path,
|
|
|
|
gchar *content,
|
|
|
|
gchar *query_params,
|
|
|
|
gchar *headers);
|
|
|
|
|
|
|
|
/*< private >*/
|
|
|
|
void *padding[20];
|
|
|
|
};
|
2015-12-10 12:54:15 +00:00
|
|
|
|
2015-12-14 19:34:11 +00:00
|
|
|
GType matrix_api_get_type(void) G_GNUC_CONST;
|
2015-12-11 13:15:42 +00:00
|
|
|
void matrix_api_initial_sync(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
guint limit);
|
|
|
|
void matrix_api_register_account(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *login_type,
|
|
|
|
GHashTable *parameters);
|
|
|
|
void matrix_api_login(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *login_type,
|
|
|
|
GHashTable *parameters);
|
2015-12-10 23:31:15 +00:00
|
|
|
void matrix_api_create_room(MatrixAPI *api,
|
2015-12-11 13:15:42 +00:00
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-10 23:31:15 +00:00
|
|
|
gchar *alias,
|
|
|
|
gboolean is_public,
|
2015-12-11 13:15:42 +00:00
|
|
|
GStrv invitees);
|
|
|
|
void matrix_api_join_room(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id_or_alias);
|
|
|
|
void matrix_api_event_stream(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *from_token,
|
|
|
|
gulong timeout);
|
2015-12-10 23:31:15 +00:00
|
|
|
void matrix_api_send_state_event(MatrixAPI *api,
|
2015-12-11 13:15:42 +00:00
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-10 23:31:15 +00:00
|
|
|
gchar *room_id,
|
|
|
|
gchar *event_type,
|
|
|
|
JsonNode *content,
|
|
|
|
gchar *state_key);
|
|
|
|
void matrix_api_send_message_event(MatrixAPI *api,
|
2015-12-11 13:15:42 +00:00
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-10 23:31:15 +00:00
|
|
|
gchar *room_id,
|
|
|
|
gchar *event_type,
|
2015-12-14 14:59:35 +00:00
|
|
|
JsonNode *content);
|
2015-12-10 23:31:15 +00:00
|
|
|
void matrix_api_send_message(MatrixAPI *api,
|
2015-12-11 13:15:42 +00:00
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-10 23:31:15 +00:00
|
|
|
gchar *room_id,
|
|
|
|
gchar *text_content,
|
|
|
|
gchar *msg_type);
|
2015-12-11 13:15:42 +00:00
|
|
|
void matrix_api_send_emote(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *text_content);
|
|
|
|
void matrix_api_get_room_name(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
|
|
|
void matrix_api_get_room_topic(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
|
|
|
void matrix_api_leave_room(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
|
|
|
void matrix_api_invite_user(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id);
|
2015-12-10 23:31:15 +00:00
|
|
|
void matrix_api_kick_user(MatrixAPI *api,
|
2015-12-11 13:15:42 +00:00
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-10 23:31:15 +00:00
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id,
|
|
|
|
gchar *reason);
|
|
|
|
void matrix_api_set_membership(MatrixAPI *api,
|
2015-12-11 13:15:42 +00:00
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-10 23:31:15 +00:00
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id,
|
|
|
|
gchar *membership,
|
|
|
|
gchar *reason);
|
|
|
|
void matrix_api_ban_user(MatrixAPI *api,
|
2015-12-11 13:15:42 +00:00
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
2015-12-10 23:31:15 +00:00
|
|
|
gchar *room_id,
|
|
|
|
gchar *user_id,
|
|
|
|
gchar *reason);
|
2015-12-11 13:15:42 +00:00
|
|
|
void matrix_api_get_room_state(MatrixAPI *api,
|
|
|
|
MatrixAPICallback callback,
|
|
|
|
gpointer user_data,
|
|
|
|
gchar *room_id);
|
2015-12-10 23:31:15 +00:00
|
|
|
void matrix_api_get_text_body(MatrixAPI *api, gchar *text, gchar *msgtype);
|
|
|
|
void matrix_api_get_html_body(MatrixAPI *api, gchar *html, gchar *msgtype);
|
|
|
|
void matrix_api_get_emote_body(MatrixAPI *api, gchar *text);
|
|
|
|
void _send(MatrixAPI *api,
|
|
|
|
gchar *method,
|
|
|
|
gchar *path,
|
|
|
|
gchar *content,
|
|
|
|
GHashTable *query_params,
|
|
|
|
GHashTable *headers);
|
|
|
|
|
2015-12-10 12:54:15 +00:00
|
|
|
G_END_DECLS
|
|
|
|
|
2015-12-11 13:15:42 +00:00
|
|
|
#endif /* __MATRIX_API_IFACE_H__ */
|