Add JSON getters for MatrixAPIFilter
This commit is contained in:
parent
b24bcd8bca
commit
0b17b583ab
@ -99,6 +99,8 @@ matrix_api_filter_set_presence_filter
|
||||
matrix_api_filter_get_presence_filter
|
||||
matrix_api_filter_set_room_filter
|
||||
matrix_api_filter_get_room_filter
|
||||
matrix_api_filter_get_json_node
|
||||
matrix_api_filter_get_json_data
|
||||
|
||||
<SUBSECTION>
|
||||
MatrixAPI3PidCredential
|
||||
|
@ -17,6 +17,8 @@
|
||||
*/
|
||||
|
||||
#include "matrix-api-types.h"
|
||||
#include "matrix-enumtypes.h"
|
||||
#include "utils.h"
|
||||
|
||||
/**
|
||||
* SECTION:matrix-api-types
|
||||
@ -1525,6 +1527,69 @@ matrix_api_filter_get_room_filter(MatrixAPIFilter *filter)
|
||||
return filter->room;
|
||||
}
|
||||
|
||||
/**
|
||||
* matrix_api_filter_get_json_node:
|
||||
* @filter: a #MatrixAPIFilter
|
||||
*
|
||||
* Get the JSON representation of @filter as a #JsonNode
|
||||
*
|
||||
* Returns: (transfer full): the JSON representation of @filter
|
||||
*/
|
||||
JsonNode *
|
||||
matrix_api_filter_get_json_node(MatrixAPIFilter *filter)
|
||||
{
|
||||
JsonBuilder *builder;
|
||||
JsonNode *root, *tmp;
|
||||
|
||||
builder = json_builder_new();
|
||||
json_builder_begin_object(builder);
|
||||
|
||||
json_builder_set_member_name(builder, "event_fields");
|
||||
json_builder_begin_array(builder);
|
||||
g_list_foreach(filter->event_fields, (GFunc)json_add_string, builder);
|
||||
json_builder_end_array(builder);
|
||||
|
||||
json_builder_set_member_name(builder, "event_format");
|
||||
json_builder_add_string_value(builder,
|
||||
g_enum_to_string(
|
||||
MATRIX_TYPE_API_EVENT_FORMAT,
|
||||
filter->event_format,
|
||||
TRUE));
|
||||
|
||||
json_builder_set_member_name(builder, "presence");
|
||||
tmp = matrix_api_filter_rules_get_json_node(filter->presence);
|
||||
json_builder_add_value(builder, tmp);
|
||||
json_node_free(tmp);
|
||||
|
||||
json_builder_set_member_name(builder, "room");
|
||||
tmp = matrix_api_room_filter_get_json_node(filter->room);
|
||||
json_builder_add_value(builder, tmp);
|
||||
json_node_free(tmp);
|
||||
|
||||
json_builder_end_object(builder);
|
||||
root = json_builder_get_root(builder);
|
||||
g_object_unref(builder);
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
gchar *
|
||||
matrix_api_filter_get_json_data(MatrixAPIFilter *filter, gsize *datalen)
|
||||
{
|
||||
JsonGenerator *generator;
|
||||
JsonNode *node = matrix_api_filter_get_json_node(filter);
|
||||
gchar *data;
|
||||
|
||||
generator = json_generator_new();
|
||||
json_generator_set_root(generator, node);
|
||||
json_node_free(node);
|
||||
|
||||
data = json_generator_to_data(generator, datalen);
|
||||
g_object_unref(generator);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* MatrixAPI3PidCredential:
|
||||
*
|
||||
|
@ -212,6 +212,8 @@ MatrixAPIFilterRules *matrix_api_filter_get_presence_filter(MatrixAPIFilter *fil
|
||||
void matrix_api_filter_set_room_filter(MatrixAPIFilter *filter,
|
||||
MatrixAPIRoomFilter *room_filter);
|
||||
MatrixAPIRoomFilter *matrix_api_filter_get_room_filter(MatrixAPIFilter *filter);
|
||||
JsonNode *matrix_api_filter_get_json_node(MatrixAPIFilter *filter);
|
||||
gchar *matrix_api_filter_get_json_data(MatrixAPIFilter *filter, gsize *datalen);
|
||||
|
||||
typedef struct _MatrixAPI3PidCredential MatrixAPI3PidCredential;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user