summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeesoo Ahn <yisooan@fedoraproject.org>2020-05-31 19:12:33 +0900
committerLeesoo Ahn <yisooan@fedoraproject.org>2020-06-07 17:37:07 +0900
commit92d8da46cd034bbad3cd95722d4b157a9317bcd2 (patch)
treea90ed3d5e07fcca1c0685f574514c0c19a2fc255
parenteeba8bffe0e52f319d81adb226abb8333244237c (diff)
downloadlibgfbgraph-92d8da46cd034bbad3cd95722d4b157a9317bcd2.tar.gz
Clean up codebase
- change indent to 2 spaces - refactor
-rw-r--r--gfbgraph/gfbgraph-album.c393
-rw-r--r--gfbgraph/gfbgraph-album.h38
-rw-r--r--gfbgraph/gfbgraph-authorizer.c30
-rw-r--r--gfbgraph/gfbgraph-authorizer.h40
-rw-r--r--gfbgraph/gfbgraph-common.c21
-rw-r--r--gfbgraph/gfbgraph-common.h3
-rw-r--r--gfbgraph/gfbgraph-connectable.c172
-rw-r--r--gfbgraph/gfbgraph-connectable.h46
-rw-r--r--gfbgraph/gfbgraph-goa-authorizer.c283
-rw-r--r--gfbgraph/gfbgraph-goa-authorizer.h28
-rw-r--r--gfbgraph/gfbgraph-node.c783
-rw-r--r--gfbgraph/gfbgraph-node.h74
-rw-r--r--gfbgraph/gfbgraph-photo.c773
-rw-r--r--gfbgraph/gfbgraph-photo.h48
-rw-r--r--gfbgraph/gfbgraph-simple-authorizer.c224
-rw-r--r--gfbgraph/gfbgraph-simple-authorizer.h28
-rw-r--r--gfbgraph/gfbgraph-user.c498
-rw-r--r--gfbgraph/gfbgraph-user.h61
-rw-r--r--gfbgraph/gfbgraph.h3
-rw-r--r--tests/autoptr.c42
-rw-r--r--tests/gtestutils.c384
21 files changed, 2087 insertions, 1885 deletions
diff --git a/gfbgraph/gfbgraph-album.c b/gfbgraph/gfbgraph-album.c
index 5ae726d..8f8cec4 100644
--- a/gfbgraph/gfbgraph-album.c
+++ b/gfbgraph/gfbgraph-album.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -35,209 +36,206 @@
#include "gfbgraph-connectable.h"
enum {
- PROP_O,
-
- PROP_NAME,
- PROP_DESCRIPTION,
- PROP_COVER_PHOTO,
- PROP_COUNT
+ PROP_O,
+ PROP_NAME,
+ PROP_DESCRIPTION,
+ PROP_COVER_PHOTO,
+ PROP_COUNT
};
struct _GFBGraphAlbumPrivate {
- gchar *name;
- gchar *description;
- gchar *cover_photo;
- guint count;
+ gchar *name;
+ gchar *description;
+ gchar *cover_photo;
+ guint count;
};
-static void gfbgraph_album_init (GFBGraphAlbum *obj);
-static void gfbgraph_album_class_init (GFBGraphAlbumClass *klass);
-static void gfbgraph_album_finalize (GObject *obj);
-static void gfbgraph_album_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gfbgraph_album_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-static void gfbgraph_album_connectable_iface_init (GFBGraphConnectableInterface *iface);
-GHashTable* gfbgraph_album_get_connection_post_params (GFBGraphConnectable *self, GType node_type);
-
-#define GFBGRAPH_ALBUM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_ALBUM, GFBGraphAlbumPrivate))
+#define GFBGRAPH_ALBUM_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_ALBUM, GFBGraphAlbumPrivate))
static GFBGraphNodeClass *parent_class = NULL;
+static void connectable_iface_init (GFBGraphConnectableInterface *iface);
+
G_DEFINE_TYPE_WITH_CODE (GFBGraphAlbum, gfbgraph_album, GFBGRAPH_TYPE_NODE,
- G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_CONNECTABLE, gfbgraph_album_connectable_iface_init));
+ G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_CONNECTABLE, connectable_iface_init));
static void
-gfbgraph_album_init (GFBGraphAlbum *obj)
+gfbgraph_album_finalize (GObject *obj)
{
- obj->priv = GFBGRAPH_ALBUM_GET_PRIVATE(obj);
+ GFBGraphAlbumPrivate *priv = GFBGRAPH_ALBUM_GET_PRIVATE (obj);
+
+ if (priv->name)
+ g_free (priv->name);
+ if (priv->description)
+ g_free (priv->description);
+ if (priv->cover_photo)
+ g_free (priv->cover_photo);
+
+ G_OBJECT_CLASS(parent_class)->finalize (obj);
}
static void
-gfbgraph_album_class_init (GFBGraphAlbumClass *klass)
+gfbgraph_album_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->finalize = gfbgraph_album_finalize;
- gobject_class->set_property = gfbgraph_album_set_property;
- gobject_class->get_property = gfbgraph_album_get_property;
-
- g_type_class_add_private (gobject_class, sizeof(GFBGraphAlbumPrivate));
-
- /**
- * GFBGraphAlbum:name:
- *
- * The album name.
- **/
- g_object_class_install_property (gobject_class,
- PROP_NAME,
- g_param_spec_string ("name",
- "The title", "The name of the album",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphAlbum:description:
- *
- * The album description given by the owner.
- **/
- g_object_class_install_property (gobject_class,
- PROP_DESCRIPTION,
- g_param_spec_string ("description",
- "The description", "The description of the album",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphAlbum:cover_photo:
- *
- * The node ID for the album cover photo. It's an ID for a #GFBGraphPhoto node.
- **/
- g_object_class_install_property (gobject_class,
- PROP_COVER_PHOTO,
- g_param_spec_string ("cover_photo",
- "Cover photo", "The ID for the cover photo of the album",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphAlbum:count:
- *
- * The number of photos in the album.
- **/
- g_object_class_install_property (gobject_class,
- PROP_COUNT,
- g_param_spec_uint ("count",
- "Number of photos", "The number of photos in the album",
- 0, G_MAXUINT, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
+ GFBGraphAlbumPrivate *priv = GFBGRAPH_ALBUM_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_NAME:
+ if (priv->name)
+ g_free (priv->name);
+ priv->name = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_DESCRIPTION:
+ if (priv->description)
+ g_free (priv->description);
+ priv->description = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_COVER_PHOTO:
+ if (priv->cover_photo)
+ g_free (priv->cover_photo);
+ priv->cover_photo = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_COUNT:
+ priv->count = g_value_get_uint (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_album_finalize (GObject *obj)
+gfbgraph_album_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- GFBGraphAlbumPrivate *priv;
-
- priv = GFBGRAPH_ALBUM_GET_PRIVATE (obj);
-
- if (priv->name)
- g_free (priv->name);
- if (priv->description)
- g_free (priv->description);
- if (priv->cover_photo)
- g_free (priv->cover_photo);
-
- G_OBJECT_CLASS(parent_class)->finalize (obj);
+ GFBGraphAlbumPrivate *priv = GFBGRAPH_ALBUM_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_NAME:
+ g_value_set_string (value, priv->name);
+ break;
+ case PROP_DESCRIPTION:
+ g_value_set_string (value, priv->description);
+ break;
+ case PROP_COVER_PHOTO:
+ g_value_set_string (value, priv->cover_photo);
+ break;
+ case PROP_COUNT:
+ g_value_set_uint (value, priv->count);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_album_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gfbgraph_album_class_init (GFBGraphAlbumClass *klass)
{
- GFBGraphAlbumPrivate *priv;
-
- priv = GFBGRAPH_ALBUM_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_NAME:
- if (priv->name)
- g_free (priv->name);
- priv->name = g_strdup (g_value_get_string (value));
- break;
- case PROP_DESCRIPTION:
- if (priv->description)
- g_free (priv->description);
- priv->description = g_strdup (g_value_get_string (value));
- break;
- case PROP_COVER_PHOTO:
- if (priv->cover_photo)
- g_free (priv->cover_photo);
- priv->cover_photo = g_strdup (g_value_get_string (value));
- break;
- case PROP_COUNT:
- priv->count = g_value_get_uint (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class->finalize = gfbgraph_album_finalize;
+ gobject_class->set_property = gfbgraph_album_set_property;
+ gobject_class->get_property = gfbgraph_album_get_property;
+
+ g_type_class_add_private (gobject_class, sizeof(GFBGraphAlbumPrivate));
+
+ /**
+ * GFBGraphAlbum:name:
+ *
+ * The album name.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_NAME,
+ g_param_spec_string ("name",
+ "The title",
+ "The name of the album",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphAlbum:description:
+ *
+ * The album description given by the owner.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_DESCRIPTION,
+ g_param_spec_string ("description",
+ "The description",
+ "The description of the album",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphAlbum:cover_photo:
+ *
+ * The node ID for the album cover photo. It's an ID for a #GFBGraphPhoto node.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_COVER_PHOTO,
+ g_param_spec_string ("cover_photo",
+ "Cover photo",
+ "The ID for the cover photo of the album",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphAlbum:count:
+ *
+ * The number of photos in the album.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_COUNT,
+ g_param_spec_uint ("count",
+ "Number of photos",
+ "The number of photos in the album",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
}
static void
-gfbgraph_album_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gfbgraph_album_init (GFBGraphAlbum *obj)
{
- GFBGraphAlbumPrivate *priv;
-
- priv = GFBGRAPH_ALBUM_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_NAME:
- g_value_set_string (value, priv->name);
- break;
- case PROP_DESCRIPTION:
- g_value_set_string (value, priv->description);
- break;
- case PROP_COVER_PHOTO:
- g_value_set_string (value, priv->cover_photo);
- break;
- case PROP_COUNT:
- g_value_set_uint (value, priv->count);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ obj->priv = GFBGRAPH_ALBUM_GET_PRIVATE(obj);
}
-static void
-gfbgraph_album_connectable_iface_init (GFBGraphConnectableInterface *iface)
+static GHashTable *
+get_connection_post_params (GFBGraphConnectable *self,
+ GType node_type)
{
- GHashTable *connections;
+ GHashTable *params;
+ GFBGraphAlbumPrivate *priv = GFBGRAPH_ALBUM_GET_PRIVATE (self);
- connections = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (connections, (gpointer) g_type_name (GFBGRAPH_TYPE_USER), (gpointer) "albums");
+ params = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (params, "name", priv->name);
+ if (priv->description != NULL)
+ g_hash_table_insert (params, "message", priv->description);
+ /* TODO: Incorpate the "privacy" param */
- iface->connections = connections;
- iface->get_connection_post_params = gfbgraph_album_get_connection_post_params;
- iface->parse_connected_data = gfbgraph_connectable_default_parse_connected_data;
+ return params;
}
-GHashTable*
-gfbgraph_album_get_connection_post_params (GFBGraphConnectable *self, GType node_type)
+static void
+connectable_iface_init (GFBGraphConnectableInterface *iface)
{
- GHashTable *params;
- GFBGraphAlbumPrivate *priv;
-
- priv = GFBGRAPH_ALBUM_GET_PRIVATE (self);
+ GHashTable *connections = g_hash_table_new (g_str_hash, g_str_equal);
- params = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (params, "name", priv->name);
- if (priv->description != NULL)
- g_hash_table_insert (params, "message", priv->description);
- /* TODO: Incorpate the "privacy" param */
+ g_hash_table_insert (connections,
+ (gpointer) g_type_name (GFBGRAPH_TYPE_USER),
+ (gpointer) "albums");
- return params;
+ iface->connections = connections;
+ iface->get_connection_post_params = get_connection_post_params;
+ iface->parse_connected_data = gfbgraph_connectable_default_parse_connected_data;
}
/**
@@ -247,10 +245,10 @@ gfbgraph_album_get_connection_post_params (GFBGraphConnectable *self, GType node
*
* Returns: (transfer full): a new #GFBGraphAlbum; unref with g_object_unref()
**/
-GFBGraphAlbum*
+GFBGraphAlbum *
gfbgraph_album_new (void)
{
- return GFBGRAPH_ALBUM (g_object_new(GFBGRAPH_TYPE_ALBUM, NULL));
+ return GFBGRAPH_ALBUM (g_object_new (GFBGRAPH_TYPE_ALBUM, NULL));
}
/**
@@ -263,10 +261,15 @@ gfbgraph_album_new (void)
*
* Returns: (transfer full): a new #GFBGraphAlbum; unref with g_object_unref()
**/
-GFBGraphAlbum*
-gfbgraph_album_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GError **error)
+GFBGraphAlbum *
+gfbgraph_album_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GError **error)
{
- return GFBGRAPH_ALBUM (gfbgraph_node_new_from_id (authorizer, id, GFBGRAPH_TYPE_ALBUM, error));
+ return GFBGRAPH_ALBUM (gfbgraph_node_new_from_id (authorizer,
+ id,
+ GFBGRAPH_TYPE_ALBUM,
+ error));
}
/**
@@ -275,12 +278,12 @@ gfbgraph_album_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GEr
*
* Returns: (transfer none): the @album name, or %NULL.
**/
-const gchar*
+const gchar *
gfbgraph_album_get_name (GFBGraphAlbum *album)
{
- g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), NULL);
- return album->priv->name;
+ return album->priv->name;
}
/**
@@ -289,12 +292,12 @@ gfbgraph_album_get_name (GFBGraphAlbum *album)
*
* Returns: (transfer none): the @album description, or %NULL.
**/
-const gchar*
+const gchar *
gfbgraph_album_get_description (GFBGraphAlbum *album)
{
- g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), NULL);
- return album->priv->description;
+ return album->priv->description;
}
/**
@@ -303,12 +306,12 @@ gfbgraph_album_get_description (GFBGraphAlbum *album)
*
* Returns: (transfer none): the cover photo node ID or %NULL.
**/
-const gchar*
+const gchar *
gfbgraph_album_get_cover_photo_id (GFBGraphAlbum *album)
{
- g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), NULL);
- return album->priv->cover_photo;
+ return album->priv->cover_photo;
}
/**
@@ -320,9 +323,9 @@ gfbgraph_album_get_cover_photo_id (GFBGraphAlbum *album)
guint
gfbgraph_album_get_count (GFBGraphAlbum *album)
{
- g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), -1);
+ g_return_val_if_fail (GFBGRAPH_IS_ALBUM (album), -1);
- return album->priv->count;
+ return album->priv->count;
}
/**
@@ -333,14 +336,15 @@ gfbgraph_album_get_count (GFBGraphAlbum *album)
* Sets the name for the @album.
**/
void
-gfbgraph_album_set_name (GFBGraphAlbum *album, const gchar *name)
+gfbgraph_album_set_name (GFBGraphAlbum *album,
+ const gchar *name)
{
- g_return_if_fail (GFBGRAPH_IS_ALBUM (album));
- g_return_if_fail (name != NULL);
+ g_return_if_fail (GFBGRAPH_IS_ALBUM (album));
+ g_return_if_fail (name != NULL);
- g_object_set (G_OBJECT (album),
- "name", name,
- NULL);
+ g_object_set (G_OBJECT (album),
+ "name", name,
+ NULL);
}
/**
@@ -351,12 +355,13 @@ gfbgraph_album_set_name (GFBGraphAlbum *album, const gchar *name)
* Sets the description for the @album.
**/
void
-gfbgraph_album_set_description (GFBGraphAlbum *album, const gchar *description)
+gfbgraph_album_set_description (GFBGraphAlbum *album,
+ const gchar *description)
{
- g_return_if_fail (GFBGRAPH_IS_ALBUM (album));
- g_return_if_fail (description != NULL);
+ g_return_if_fail (GFBGRAPH_IS_ALBUM (album));
+ g_return_if_fail (description != NULL);
- g_object_set (G_OBJECT (album),
- "description", description,
- NULL);
+ g_object_set (G_OBJECT (album),
+ "description", description,
+ NULL);
}
diff --git a/gfbgraph/gfbgraph-album.h b/gfbgraph/gfbgraph-album.h
index e0528fb..b752e5b 100644
--- a/gfbgraph/gfbgraph-album.h
+++ b/gfbgraph/gfbgraph-album.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -25,12 +26,17 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_ALBUM (gfbgraph_album_get_type())
-#define GFBGRAPH_ALBUM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_ALBUM,GFBGraphAlbum))
-#define GFBGRAPH_ALBUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_ALBUM,GFBGraphAlbumClass))
-#define GFBGRAPH_IS_ALBUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_ALBUM))
-#define GFBGRAPH_IS_ALBUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_ALBUM))
-#define GFBGRAPH_ALBUM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_ALBUM,GFBGraphAlbumClass))
+#define GFBGRAPH_TYPE_ALBUM (gfbgraph_album_get_type())
+#define GFBGRAPH_ALBUM(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GFBGRAPH_TYPE_ALBUM,GFBGraphAlbum))
+#define GFBGRAPH_ALBUM_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GFBGRAPH_TYPE_ALBUM,GFBGraphAlbumClass))
+#define GFBGRAPH_IS_ALBUM(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GFBGRAPH_TYPE_ALBUM))
+#define GFBGRAPH_IS_ALBUM_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GFBGRAPH_TYPE_ALBUM))
+#define GFBGRAPH_ALBUM_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), GFBGRAPH_TYPE_ALBUM,GFBGraphAlbumClass))
typedef struct _GFBGraphAlbum GFBGraphAlbum;
typedef struct _GFBGraphAlbumClass GFBGraphAlbumClass;
@@ -39,27 +45,31 @@ typedef struct _GFBGraphAlbumPrivate GFBGraphAlbumPrivate;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GFBGraphAlbum, g_object_unref)
struct _GFBGraphAlbum {
- GFBGraphNode parent;
+ GFBGraphNode parent;
- /*< private >*/
- GFBGraphAlbumPrivate *priv;
+ /*< private >*/
+ GFBGraphAlbumPrivate *priv;
};
struct _GFBGraphAlbumClass {
- GFBGraphNodeClass parent_class;
+ GFBGraphNodeClass parent_class;
};
GType gfbgraph_album_get_type (void) G_GNUC_CONST;
GFBGraphAlbum* gfbgraph_album_new (void);
-GFBGraphAlbum* gfbgraph_album_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GError **error);
+GFBGraphAlbum* gfbgraph_album_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GError **error);
const gchar* gfbgraph_album_get_name (GFBGraphAlbum *album);
const gchar* gfbgraph_album_get_description (GFBGraphAlbum *album);
const gchar* gfbgraph_album_get_cover_photo_id (GFBGraphAlbum *album);
guint gfbgraph_album_get_count (GFBGraphAlbum *album);
-void gfbgraph_album_set_name (GFBGraphAlbum *album, const gchar *name);
-void gfbgraph_album_set_description (GFBGraphAlbum *album, const gchar *description);
+void gfbgraph_album_set_name (GFBGraphAlbum *album,
+ const gchar *name);
+void gfbgraph_album_set_description (GFBGraphAlbum *album,
+ const gchar *description);
G_END_DECLS
diff --git a/gfbgraph/gfbgraph-authorizer.c b/gfbgraph/gfbgraph-authorizer.c
index 95cf06e..2ce2341 100644
--- a/gfbgraph/gfbgraph-authorizer.c
+++ b/gfbgraph/gfbgraph-authorizer.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -46,10 +47,12 @@ gfbgraph_authorizer_default_init (GFBGraphAuthorizerInterface *iface)
* This method modifies @call in place and is thread safe.
*/
void
-gfbgraph_authorizer_process_call (GFBGraphAuthorizer *iface, RestProxyCall *call)
+gfbgraph_authorizer_process_call (GFBGraphAuthorizer *iface,
+ RestProxyCall *call)
{
- g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (iface));
- GFBGRAPH_AUTHORIZER_GET_IFACE (iface)->process_call (iface, call);
+ g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (iface));
+
+ GFBGRAPH_AUTHORIZER_GET_IFACE (iface)->process_call (iface, call);
}
/**
@@ -63,10 +66,12 @@ gfbgraph_authorizer_process_call (GFBGraphAuthorizer *iface, RestProxyCall *call
* This method modifies @message in place and is thread safe.
*/
void
-gfbgraph_authorizer_process_message (GFBGraphAuthorizer *iface, SoupMessage *message)
+gfbgraph_authorizer_process_message (GFBGraphAuthorizer *iface,
+ SoupMessage *message)
{
- g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (iface));
- GFBGRAPH_AUTHORIZER_GET_IFACE (iface)->process_message (iface, message);
+ g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (iface));
+
+ GFBGRAPH_AUTHORIZER_GET_IFACE (iface)->process_message (iface, message);
}
/**
@@ -83,8 +88,13 @@ gfbgraph_authorizer_process_message (GFBGraphAuthorizer *iface, SoupMessage *mes
* Returns: %TRUE if the authorizer now has a valid token.
*/
gboolean
-gfbgraph_authorizer_refresh_authorization (GFBGraphAuthorizer *iface, GCancellable *cancellable, GError **error)
+gfbgraph_authorizer_refresh_authorization (GFBGraphAuthorizer *iface,
+ GCancellable *cancellable,
+ GError **error)
{
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (iface), FALSE);
- return GFBGRAPH_AUTHORIZER_GET_IFACE (iface)->refresh_authorization (iface, cancellable, error);
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (iface), FALSE);
+
+ return GFBGRAPH_AUTHORIZER_GET_IFACE (iface)->refresh_authorization (iface,
+ cancellable,
+ error);
}
diff --git a/gfbgraph/gfbgraph-authorizer.h b/gfbgraph/gfbgraph-authorizer.h
index 6100cbd..bc57d76 100644
--- a/gfbgraph/gfbgraph-authorizer.h
+++ b/gfbgraph/gfbgraph-authorizer.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -27,10 +28,13 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_AUTHORIZER (gfbgraph_authorizer_get_type ())
-#define GFBGRAPH_AUTHORIZER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GFBGRAPH_TYPE_AUTHORIZER, GFBGraphAuthorizer))
-#define GFBGRAPH_IS_AUTHORIZER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GFBGRAPH_TYPE_AUTHORIZER))
-#define GFBGRAPH_AUTHORIZER_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GFBGRAPH_TYPE_AUTHORIZER, GFBGraphAuthorizerInterface))
+#define GFBGRAPH_TYPE_AUTHORIZER (gfbgraph_authorizer_get_type ())
+#define GFBGRAPH_AUTHORIZER(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), GFBGRAPH_TYPE_AUTHORIZER, GFBGraphAuthorizer))
+#define GFBGRAPH_IS_AUTHORIZER(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), GFBGRAPH_TYPE_AUTHORIZER))
+#define GFBGRAPH_AUTHORIZER_GET_IFACE(o) \
+ (G_TYPE_INSTANCE_GET_INTERFACE ((o), GFBGRAPH_TYPE_AUTHORIZER, GFBGraphAuthorizerInterface))
typedef struct _GFBGraphAuthorizer GFBGraphAuthorizer;
typedef struct _GFBGraphAuthorizerInterface GFBGraphAuthorizerInterface;
@@ -46,26 +50,26 @@ typedef struct _GFBGraphAuthorizerInterface GFBGraphAuthorizerInterface;
* Interface structure for #GFBGraphAuthorizer. All methos should be thread safe.
**/
struct _GFBGraphAuthorizerInterface {
- GTypeInterface parent;
+ GTypeInterface parent;
- void (*process_call) (GFBGraphAuthorizer *iface,
- RestProxyCall *call);
- void (*process_message) (GFBGraphAuthorizer *iface,
- SoupMessage *message);
- gboolean (*refresh_authorization) (GFBGraphAuthorizer *iface,
- GCancellable *cancellable,
- GError **error);
+ void (*process_call) (GFBGraphAuthorizer *iface,
+ RestProxyCall *call);
+ void (*process_message) (GFBGraphAuthorizer *iface,
+ SoupMessage *message);
+ gboolean (*refresh_authorization) (GFBGraphAuthorizer *iface,
+ GCancellable *cancellable,
+ GError **error);
};
GType gfbgraph_authorizer_get_type (void) G_GNUC_CONST;
void gfbgraph_authorizer_process_call (GFBGraphAuthorizer *iface,
- RestProxyCall *call);
+ RestProxyCall *call);
void gfbgraph_authorizer_process_message (GFBGraphAuthorizer *iface,
- SoupMessage *message);
-gboolean gfbgraph_authorizer_refresh_authorization (GFBGraphAuthorizer *iface,
- GCancellable *cancellable,
- GError **error);
+ SoupMessage *message);
+gboolean gfbgraph_authorizer_refresh_authorization (GFBGraphAuthorizer *iface,
+ GCancellable *cancellable,
+ GError **error);
G_END_DECLS
diff --git a/gfbgraph/gfbgraph-common.c b/gfbgraph/gfbgraph-common.c
index 137f880..c60e635 100644
--- a/gfbgraph/gfbgraph-common.c
+++ b/gfbgraph/gfbgraph-common.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013-2015 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -32,20 +33,20 @@
*
* Returns: (transfer full): a new #RestProxyCall or %NULL in case of error.
**/
-RestProxyCall*
+RestProxyCall *
gfbgraph_new_rest_call (GFBGraphAuthorizer *authorizer)
{
- RestProxy *proxy;
- RestProxyCall *rest_call;
+ RestProxy *proxy;
+ RestProxyCall *rest_call;
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
- proxy = rest_proxy_new (FACEBOOK_ENDPOINT, FALSE);
- rest_call = rest_proxy_new_call (proxy);
+ proxy = rest_proxy_new (FACEBOOK_ENDPOINT, FALSE);
+ rest_call = rest_proxy_new_call (proxy);
- gfbgraph_authorizer_process_call (authorizer, rest_call);
+ gfbgraph_authorizer_process_call (authorizer, rest_call);
- g_object_unref (proxy);
+ g_object_unref (proxy);
- return rest_call;
+ return rest_call;
}
diff --git a/gfbgraph/gfbgraph-common.h b/gfbgraph/gfbgraph-common.h
index b2bad18..4af3e85 100644
--- a/gfbgraph/gfbgraph-common.h
+++ b/gfbgraph/gfbgraph-common.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/gfbgraph/gfbgraph-connectable.c b/gfbgraph/gfbgraph-connectable.c
index 82b0765..b24be50 100644
--- a/gfbgraph/gfbgraph-connectable.c
+++ b/gfbgraph/gfbgraph-connectable.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -39,27 +40,27 @@ G_DEFINE_INTERFACE (GFBGraphConnectable, gfbgraph_connectable, GFBGRAPH_TYPE_NOD
static void
gfbgraph_connectable_default_init (GFBGraphConnectableInterface *iface)
{
- iface->connections = NULL;
+ iface->connections = NULL;
- iface->get_connection_post_params = NULL;
- iface->parse_connected_data = NULL;
+ iface->get_connection_post_params = NULL;
+ iface->parse_connected_data = NULL;
}
-static GHashTable*
+static GHashTable *
get_connections (GFBGraphConnectableInterface *iface)
{
- /* The GHashTable contains the connections for a node.
- * The key must be the g_type_name() of a GFBGRAPH_TYPE_NODE, and the value
- * must be the function name to call in order to retrieve the nodes connected
- * to the GFBGraphNode indicated by GFBGRAPH_TYPE_NODE.
- */
- GHashTable *connections;
-
- connections = iface->connections;
- /* If no connections... Why you implement this iface? */
- g_assert (g_hash_table_size (connections) > 0);
-
- return connections;
+ /* The GHashTable contains the connections for a node.
+ * The key must be the g_type_name() of a GFBGRAPH_TYPE_NODE, and the value
+ * must be the function name to call in order to retrieve the nodes connected
+ * to the GFBGraphNode indicated by GFBGRAPH_TYPE_NODE.
+ */
+ GHashTable *connections;
+
+ connections = iface->connections;
+ /* If no connections... Why you implement this iface? */
+ g_assert (g_hash_table_size (connections) > 0);
+
+ return connections;
}
/**
@@ -72,19 +73,20 @@ get_connections (GFBGraphConnectableInterface *iface)
*
* Returns: (transfer full): A string based #GHashTable with the params and his values or %NULL.
**/
-GHashTable*
-gfbgraph_connectable_get_connection_post_params (GFBGraphConnectable *self, GType node_type)
+GHashTable *
+gfbgraph_connectable_get_connection_post_params (GFBGraphConnectable *self,
+ GType node_type)
{
- GFBGraphConnectableInterface *iface;
+ GFBGraphConnectableInterface *iface;
- g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), NULL);
- g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
- g_return_val_if_fail (gfbgraph_connectable_is_connectable_to (self, node_type), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), NULL);
+ g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
+ g_return_val_if_fail (gfbgraph_connectable_is_connectable_to (self, node_type), NULL);
- iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
- g_assert (iface->get_connection_post_params != NULL);
+ iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
+ g_assert (iface->get_connection_post_params != NULL);
- return iface->get_connection_post_params (self, node_type);
+ return iface->get_connection_post_params (self, node_type);
}
/**
@@ -98,17 +100,19 @@ gfbgraph_connectable_get_connection_post_params (GFBGraphConnectable *self, GTyp
*
* Returns: (element-type GFBGraphNode) (transfer full): a newly-allocated #GList of #GFBGraphNode created from the @payload or %NULL.
**/
-GList*
-gfbgraph_connectable_parse_connected_data (GFBGraphConnectable *self, const gchar *payload, GError **error)
+GList *
+gfbgraph_connectable_parse_connected_data (GFBGraphConnectable *self,
+ const gchar *payload,
+ GError **error)
{
- GFBGraphConnectableInterface *iface;
+ GFBGraphConnectableInterface *iface;
- g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), NULL);
- iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
- g_assert (iface->parse_connected_data != NULL);
+ iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
+ g_assert (iface->parse_connected_data != NULL);
- return iface->parse_connected_data (self, payload, error);
+ return iface->parse_connected_data (self, payload, error);
}
@@ -124,18 +128,19 @@ gfbgraph_connectable_parse_connected_data (GFBGraphConnectable *self, const gcha
* %FALSE otherwise.
**/
gboolean
-gfbgraph_connectable_is_connectable_to (GFBGraphConnectable *self, GType node_type)
+gfbgraph_connectable_is_connectable_to (GFBGraphConnectable *self,
+ GType node_type)
{
- GFBGraphConnectableInterface *iface;
- GHashTable *connections;
+ GFBGraphConnectableInterface *iface;
+ GHashTable *connections;
- g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), FALSE);
- g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), FALSE);
+ g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), FALSE);
+ g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), FALSE);
- iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
+ iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
+ connections = get_connections (iface);
- connections = get_connections (iface);
- return g_hash_table_contains (connections, g_type_name (node_type));
+ return g_hash_table_contains (connections, g_type_name (node_type));
}
/**
@@ -148,20 +153,21 @@ gfbgraph_connectable_is_connectable_to (GFBGraphConnectable *self, GType node_ty
*
* Returns: (transfer none): a const #gchar with the function path or %NULL.
**/
-const gchar*
-gfbgraph_connectable_get_connection_path (GFBGraphConnectable *self, GType node_type)
+const gchar *
+gfbgraph_connectable_get_connection_path (GFBGraphConnectable *self,
+ GType node_type)
{
- GFBGraphConnectableInterface *iface;
- GHashTable *connections;
+ GFBGraphConnectableInterface *iface;
+ GHashTable *connections;
- g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), NULL);
- g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
- g_return_val_if_fail (gfbgraph_connectable_is_connectable_to (self, node_type), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_CONNECTABLE (self), NULL);
+ g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
+ g_return_val_if_fail (gfbgraph_connectable_is_connectable_to (self, node_type), NULL);
- iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
+ iface = GFBGRAPH_CONNECTABLE_GET_IFACE (self);
+ connections = get_connections (iface);
- connections = get_connections (iface);
- return (const gchar *) g_hash_table_lookup (connections, g_type_name (node_type));
+ return (const gchar *) g_hash_table_lookup (connections, g_type_name (node_type));
}
/**
@@ -179,36 +185,38 @@ gfbgraph_connectable_get_connection_path (GFBGraphConnectable *self, GType node_
*
* Returns: (element-type GFBGraphNode) (transfer full): a newly-allocated #GList of #GFBGraphNode with the same #GType as @self.
**/
-GList*
-gfbgraph_connectable_default_parse_connected_data (GFBGraphConnectable *self, const gchar *payload, GError **error)
+GList *
+gfbgraph_connectable_default_parse_connected_data (GFBGraphConnectable *self,
+ const gchar *payload,
+ GError **error)
{
- GList *nodes_list = NULL;
- JsonParser *jparser;
- GType node_type;
-
- node_type = G_OBJECT_TYPE (self);
-
- jparser = json_parser_new ();
- if (json_parser_load_from_data (jparser, payload, -1, error)) {
- JsonNode *root_jnode;
- JsonObject *main_jobject;
- JsonArray *nodes_jarray;
- int i = 0;
-
- root_jnode = json_parser_get_root (jparser);
- main_jobject = json_node_get_object (root_jnode);
- nodes_jarray = json_object_get_array_member (main_jobject, "data");
- for (i = 0; i < json_array_get_length (nodes_jarray); i++) {
- JsonNode *jnode;
- GFBGraphNode *node;
-
- jnode = json_array_get_element (nodes_jarray, i);
- node = GFBGRAPH_NODE (json_gobject_deserialize (node_type, jnode));
- nodes_list = g_list_append (nodes_list, node);
- }
- }
-
- g_clear_object (&jparser);
-
- return nodes_list;
+ GList *nodes_list = NULL;
+ JsonParser *jparser;
+ GType node_type;
+
+ node_type = G_OBJECT_TYPE (self);
+
+ jparser = json_parser_new ();
+ if (json_parser_load_from_data (jparser, payload, -1, error)) {
+ JsonNode *root_jnode;
+ JsonObject *main_jobject;
+ JsonArray *nodes_jarray;
+ int i = 0;
+
+ root_jnode = json_parser_get_root (jparser);
+ main_jobject = json_node_get_object (root_jnode);
+ nodes_jarray = json_object_get_array_member (main_jobject, "data");
+ for (i = 0; i < json_array_get_length (nodes_jarray); i++) {
+ JsonNode *jnode;
+ GFBGraphNode *node;
+
+ jnode = json_array_get_element (nodes_jarray, i);
+ node = GFBGRAPH_NODE (json_gobject_deserialize (node_type, jnode));
+ nodes_list = g_list_append (nodes_list, node);
+ }
+ }
+
+ g_clear_object (&jparser);
+
+ return nodes_list;
}
diff --git a/gfbgraph/gfbgraph-connectable.h b/gfbgraph/gfbgraph-connectable.h
index 8b8a601..94cc27c 100644
--- a/gfbgraph/gfbgraph-connectable.h
+++ b/gfbgraph/gfbgraph-connectable.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -24,32 +25,45 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_CONNECTABLE (gfbgraph_connectable_get_type ())
-#define GFBGRAPH_CONNECTABLE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GFBGRAPH_TYPE_CONNECTABLE, GFBGraphConnectable))
-#define GFBGRAPH_CONNECTABLE_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GFBGRAPH_TYPE_CONNECTABLE, GFBGraphConnectableInterface))
-#define GFBGRAPH_IS_CONNECTABLE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GFBGRAPH_TYPE_CONNECTABLE))
-#define GFBGRAPH_CONNECTABLE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), GFBGRAPH_TYPE_CONNECTABLE, GFBGraphConnectableInterface))
+#define GFBGRAPH_TYPE_CONNECTABLE (gfbgraph_connectable_get_type ())
+#define GFBGRAPH_CONNECTABLE(o) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((o), GFBGRAPH_TYPE_CONNECTABLE, GFBGraphConnectable))
+#define GFBGRAPH_CONNECTABLE_CLASS(k) \
+ (G_TYPE_CHECK_CLASS_CAST((k), GFBGRAPH_TYPE_CONNECTABLE, GFBGraphConnectableInterface))
+#define GFBGRAPH_IS_CONNECTABLE(o) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((o), GFBGRAPH_TYPE_CONNECTABLE))
+#define GFBGRAPH_CONNECTABLE_GET_IFACE(o) \
+ (G_TYPE_INSTANCE_GET_INTERFACE ((o), GFBGRAPH_TYPE_CONNECTABLE, GFBGraphConnectableInterface))
typedef struct _GFBGraphConnectable GFBGraphConnectable;
typedef struct _GFBGraphConnectableInterface GFBGraphConnectableInterface;
struct _GFBGraphConnectableInterface {
- GTypeInterface parent;
+ GTypeInterface parent;
- GHashTable *connections;
+ GHashTable * connections;
- GHashTable *(*get_connection_post_params) (GFBGraphConnectable *self, GType node_type);
- GList *(*parse_connected_data) (GFBGraphConnectable *self, const gchar *payload, GError **error);
+ GHashTable * (*get_connection_post_params) (GFBGraphConnectable *self,
+ GType node_type);
+ GList * (*parse_connected_data) (GFBGraphConnectable *self,
+ const gchar *payload,
+ GError **error);
};
GType gfbgraph_connectable_get_type (void) G_GNUC_CONST;
-GHashTable* gfbgraph_connectable_get_connection_post_params (GFBGraphConnectable *self, GType node_type);
-GList* gfbgraph_connectable_parse_connected_data (GFBGraphConnectable *self, const gchar *payload, GError **error);
-
-gboolean gfbgraph_connectable_is_connectable_to (GFBGraphConnectable *self, GType node_type);
-const gchar* gfbgraph_connectable_get_connection_path (GFBGraphConnectable *self, GType node_type);
-GList* gfbgraph_connectable_default_parse_connected_data (GFBGraphConnectable *self, const gchar *payload, GError **error);
+GHashTable* gfbgraph_connectable_get_connection_post_params (GFBGraphConnectable *self,
+ GType node_type);
+GList* gfbgraph_connectable_parse_connected_data (GFBGraphConnectable *self,
+ const gchar *payload,
+ GError **error);
+gboolean gfbgraph_connectable_is_connectable_to (GFBGraphConnectable *self,
+ GType node_type);
+const gchar* gfbgraph_connectable_get_connection_path (GFBGraphConnectable *self,
+ GType node_type);
+GList* gfbgraph_connectable_default_parse_connected_data (GFBGraphConnectable *self,
+ const gchar *payload,
+ GError **error);
G_END_DECLS
diff --git a/gfbgraph/gfbgraph-goa-authorizer.c b/gfbgraph/gfbgraph-goa-authorizer.c
index 7d75244..935f3e5 100644
--- a/gfbgraph/gfbgraph-goa-authorizer.c
+++ b/gfbgraph/gfbgraph-goa-authorizer.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -31,209 +32,201 @@
#include "gfbgraph-goa-authorizer.h"
enum {
- PROP_O,
-
- PROP_GOA_OBJECT
+ PROP_O,
+ PROP_GOA_OBJECT
};
struct _GFBGraphGoaAuthorizerPrivate {
- GMutex mutex;
- GoaObject *goa_object;
- gchar *access_token;
+ GMutex mutex;
+ GoaObject *goa_object;
+ gchar *access_token;
};
-static void gfbgraph_goa_authorizer_class_init (GFBGraphGoaAuthorizerClass *klass);
-static void gfbgraph_goa_authorizer_init (GFBGraphGoaAuthorizer *object);
-static void gfbgraph_goa_authorizer_finalize (GObject *object);
-static void gfbgraph_goa_authorizer_dispose (GObject *object);
-static void gfbgraph_goa_authorizer_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gfbgraph_goa_authorizer_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-static void gfbgraph_goa_authorizer_iface_init (GFBGraphAuthorizerInterface *iface);
-void gfbgraph_goa_authorizer_process_call (GFBGraphAuthorizer *iface, RestProxyCall *call);
-void gfbgraph_goa_authorizer_process_message (GFBGraphAuthorizer *iface, SoupMessage *message);
-gboolean gfbgraph_goa_authorizer_refresh_authorization (GFBGraphAuthorizer *iface, GCancellable *cancellable, GError **error);
-
-static void gfbgraph_goa_authorizer_set_goa_object (GFBGraphGoaAuthorizer *self, GoaObject *goa_object);
-
-#define GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_GOA_AUTHORIZER, GFBGraphGoaAuthorizerPrivate))
+#define GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_GOA_AUTHORIZER, GFBGraphGoaAuthorizerPrivate))
static GObjectClass *parent_class = NULL;
+static void authorizer_iface_init (GFBGraphAuthorizerInterface *iface);
+
G_DEFINE_TYPE_WITH_CODE (GFBGraphGoaAuthorizer, gfbgraph_goa_authorizer, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_AUTHORIZER, gfbgraph_goa_authorizer_iface_init));
+ G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_AUTHORIZER, authorizer_iface_init));
static void
-gfbgraph_goa_authorizer_class_init (GFBGraphGoaAuthorizerClass *klass)
+gfbgraph_goa_authorizer_finalize (GObject *object)
{
- GObjectClass *gobject_class;
- gobject_class = (GObjectClass*) klass;
-
- parent_class = g_type_class_peek_parent (klass);
- gobject_class->finalize = gfbgraph_goa_authorizer_finalize;
- gobject_class->get_property = gfbgraph_goa_authorizer_get_property;
- gobject_class->set_property = gfbgraph_goa_authorizer_set_property;
- gobject_class->dispose = gfbgraph_goa_authorizer_dispose;
-
- /**
- * GFBGraphGoaAuthorizer:goa-object:
- *
- * The GOA account providing authentication.
- *
- **/
- g_object_class_install_property (gobject_class,
- PROP_GOA_OBJECT,
- g_param_spec_object ("goa-object",
- "GoaObject",
- "The GOA account to authenticate.",
- GOA_TYPE_OBJECT,
- G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
-
- g_type_class_add_private (gobject_class, sizeof(GFBGraphGoaAuthorizerPrivate));
+ G_OBJECT_CLASS(parent_class)->finalize (object);
}
static void
-gfbgraph_goa_authorizer_init (GFBGraphGoaAuthorizer *object)
+gfbgraph_goa_authorizer_dispose (GObject *object)
{
- object->priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE(object);
- g_mutex_init (&object->priv->mutex);
-}
+ GFBGraphGoaAuthorizerPrivate *priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (object);
-static void
-gfbgraph_goa_authorizer_finalize (GObject *object)
-{
- G_OBJECT_CLASS(parent_class)->finalize (object);
+ g_clear_object (&priv->goa_object);
+
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
-gfbgraph_goa_authorizer_dispose (GObject *object)
+set_goa_object (GFBGraphGoaAuthorizer *self,
+ GoaObject *goa_object)
{
- GFBGraphGoaAuthorizerPrivate *priv;
+ GoaAccount *account;
+ GoaOAuth2Based *oauth2_based;
+ GFBGraphGoaAuthorizerPrivate *priv;
+
+ g_return_if_fail (GOA_IS_OBJECT (goa_object));
- priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (object);
+ priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (self);
- g_clear_object (&priv->goa_object);
+ oauth2_based = goa_object_peek_oauth2_based (goa_object);
+ g_return_if_fail (oauth2_based != NULL && GOA_IS_OAUTH2_BASED (oauth2_based));
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ account = goa_object_peek_account (goa_object);
+ g_return_if_fail (account != NULL && GOA_IS_ACCOUNT (account));
+
+ g_object_ref (goa_object);
+ priv->goa_object = goa_object;
+}
+
+static void
+gfbgraph_goa_authorizer_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (prop_id) {
+ case PROP_GOA_OBJECT:
+ set_goa_object (GFBGRAPH_GOA_AUTHORIZER (object),
+ GOA_OBJECT (g_value_get_object (value)));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_goa_authorizer_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gfbgraph_goa_authorizer_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- switch (prop_id) {
- case PROP_GOA_OBJECT:
- gfbgraph_goa_authorizer_set_goa_object (GFBGRAPH_GOA_AUTHORIZER (object), GOA_OBJECT (g_value_get_object (value)));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GFBGraphGoaAuthorizerPrivate *priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_GOA_OBJECT:
+ g_value_set_object (value, priv->goa_object);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_goa_authorizer_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gfbgraph_goa_authorizer_class_init (GFBGraphGoaAuthorizerClass *klass)
{
- GFBGraphGoaAuthorizerPrivate *priv;
-
- priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_GOA_OBJECT:
- g_value_set_object (value, priv->goa_object);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GObjectClass *gobject_class = (GObjectClass*)klass;
+
+ parent_class = g_type_class_peek_parent (klass);
+ gobject_class->finalize = gfbgraph_goa_authorizer_finalize;
+ gobject_class->dispose = gfbgraph_goa_authorizer_dispose;
+ gobject_class->get_property = gfbgraph_goa_authorizer_get_property;
+ gobject_class->set_property = gfbgraph_goa_authorizer_set_property;
+
+ /**
+ * GFBGraphGoaAuthorizer:goa-object:
+ *
+ * The GOA account providing authentication.
+ *
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_GOA_OBJECT,
+ g_param_spec_object ("goa-object",
+ "GoaObject",
+ "The GOA account to authenticate.",
+ GOA_TYPE_OBJECT,
+ G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE));
+
+ g_type_class_add_private (gobject_class, sizeof(GFBGraphGoaAuthorizerPrivate));
}
static void
-gfbgraph_goa_authorizer_iface_init (GFBGraphAuthorizerInterface *iface)
+gfbgraph_goa_authorizer_init (GFBGraphGoaAuthorizer *object)
{
- iface->process_call = gfbgraph_goa_authorizer_process_call;
- iface->process_message = gfbgraph_goa_authorizer_process_message;
- iface->refresh_authorization = gfbgraph_goa_authorizer_refresh_authorization;
+ object->priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE(object);
+ g_mutex_init (&object->priv->mutex);
}
-void
-gfbgraph_goa_authorizer_process_call (GFBGraphAuthorizer *iface, RestProxyCall *call)
+/* --- Authorizer Interface --- */
+static void
+process_call (GFBGraphAuthorizer *iface,
+ RestProxyCall *call)
{
- GFBGraphGoaAuthorizerPrivate *priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (GFBGRAPH_GOA_AUTHORIZER (iface));
+ GFBGraphGoaAuthorizerPrivate *priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (GFBGRAPH_GOA_AUTHORIZER (iface));
- g_mutex_lock (&priv->mutex);
+ g_mutex_lock (&priv->mutex);
- if (priv->access_token != NULL)
- rest_proxy_call_add_param (call, "access_token", priv->access_token);
+ if (priv->access_token != NULL)
+ rest_proxy_call_add_param (call, "access_token", priv->access_token);
- g_mutex_unlock (&priv->mutex);
+ g_mutex_unlock (&priv->mutex);
}
-void
-gfbgraph_goa_authorizer_process_message (GFBGraphAuthorizer *iface, SoupMessage *message)
+static void
+process_message (GFBGraphAuthorizer *iface,
+ SoupMessage *message)
{
- gchar *auth_value;
- SoupURI *uri;
- GFBGraphGoaAuthorizerPrivate *priv;
-
- priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (GFBGRAPH_GOA_AUTHORIZER (iface));
+ gchar *auth_value;
+ SoupURI *uri;
+ GFBGraphGoaAuthorizerPrivate *priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (GFBGRAPH_GOA_AUTHORIZER (iface));
- g_mutex_lock (&priv->mutex);
+ g_mutex_lock (&priv->mutex);
- uri = soup_message_get_uri (message);
- auth_value = g_strconcat ("access_token=", priv->access_token, NULL);
- soup_uri_set_query (uri, auth_value);
+ uri = soup_message_get_uri (message);
+ auth_value = g_strconcat ("access_token=", priv->access_token, NULL);
+ soup_uri_set_query (uri, auth_value);
- g_free (auth_value);
+ g_free (auth_value);
- g_mutex_unlock (&priv->mutex);
+ g_mutex_unlock (&priv->mutex);
}
-gboolean
-gfbgraph_goa_authorizer_refresh_authorization (GFBGraphAuthorizer *iface, GCancellable *cancellable, GError **error)
+static gboolean
+refresh_authorization (GFBGraphAuthorizer *iface,
+ GCancellable *cancellable,
+ GError **error)
{
- GFBGraphGoaAuthorizerPrivate *priv;
- GoaAccount *account;
- GoaOAuth2Based *oauth2_based;
- gboolean ret_val;
+ GoaAccount *account;
+ GoaOAuth2Based *oauth2_based;
+ gboolean ret_val = FALSE;
+ GFBGraphGoaAuthorizerPrivate *priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (GFBGRAPH_GOA_AUTHORIZER (iface));
- priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (GFBGRAPH_GOA_AUTHORIZER (iface));
- ret_val = FALSE;
+ g_mutex_lock (&priv->mutex);
- g_mutex_lock (&priv->mutex);
+ g_free (priv->access_token);
+ priv->access_token = NULL;
- g_free (priv->access_token);
- priv->access_token = NULL;
+ account = goa_object_peek_account (priv->goa_object);
+ oauth2_based = goa_object_peek_oauth2_based (priv->goa_object);
- account = goa_object_peek_account (priv->goa_object);
- oauth2_based = goa_object_peek_oauth2_based (priv->goa_object);
+ if (goa_account_call_ensure_credentials_sync (account, NULL, cancellable, error))
+ if (goa_oauth2_based_call_get_access_token_sync (oauth2_based, &priv->access_token, NULL, cancellable, error))
+ ret_val = TRUE;
- if (goa_account_call_ensure_credentials_sync (account, NULL, cancellable, error))
- if (goa_oauth2_based_call_get_access_token_sync (oauth2_based, &priv->access_token, NULL, cancellable, error))
- ret_val = TRUE;
+ g_mutex_unlock (&priv->mutex);
- g_mutex_unlock (&priv->mutex);
- return ret_val;
+ return ret_val;
}
static void
-gfbgraph_goa_authorizer_set_goa_object (GFBGraphGoaAuthorizer *self, GoaObject *goa_object)
+authorizer_iface_init (GFBGraphAuthorizerInterface *iface)
{
- GoaAccount *account;
- GoaOAuth2Based *oauth2_based;
- GFBGraphGoaAuthorizerPrivate *priv;
-
- g_return_if_fail (GOA_IS_OBJECT (goa_object));
-
- priv = GFBGRAPH_GOA_AUTHORIZER_GET_PRIVATE (self);
-
- oauth2_based = goa_object_peek_oauth2_based (goa_object);
- g_return_if_fail (oauth2_based != NULL && GOA_IS_OAUTH2_BASED (oauth2_based));
-
- account = goa_object_peek_account (goa_object);
- g_return_if_fail (account != NULL && GOA_IS_ACCOUNT (account));
-
- g_object_ref (goa_object);
- priv->goa_object = goa_object;
+ iface->process_call = process_call;
+ iface->process_message = process_message;
+ iface->refresh_authorization = refresh_authorization;
}
/**
@@ -244,8 +237,10 @@ gfbgraph_goa_authorizer_set_goa_object (GFBGraphGoaAuthorizer *self, GoaObject *
*
* Returns: (transfer full): A new #GFBGraphGoaAuthorizer. Use g_object_unref() to free it.
*/
-GFBGraphGoaAuthorizer*
+GFBGraphGoaAuthorizer *
gfbgraph_goa_authorizer_new (GoaObject *goa_object)
{
- return GFBGRAPH_GOA_AUTHORIZER (g_object_new (GFBGRAPH_TYPE_GOA_AUTHORIZER, "goa-object", goa_object, NULL));
+ return g_object_new (GFBGRAPH_TYPE_GOA_AUTHORIZER,
+ "goa-object", goa_object,
+ NULL);
}
diff --git a/gfbgraph/gfbgraph-goa-authorizer.h b/gfbgraph/gfbgraph-goa-authorizer.h
index fa0fc99..36cf674 100644
--- a/gfbgraph/gfbgraph-goa-authorizer.h
+++ b/gfbgraph/gfbgraph-goa-authorizer.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -25,26 +26,31 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_GOA_AUTHORIZER (gfbgraph_goa_authorizer_get_type())
-#define GFBGRAPH_GOA_AUTHORIZER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_GOA_AUTHORIZER,GFBGraphGoaAuthorizer))
-#define GFBGRAPH_GOA_AUTHORIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_GOA_AUTHORIZER,GFBGraphGoaAuthorizerClass))
-#define GFBGRAPH_IS_GOA_AUTHORIZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_GOA_AUTHORIZER))
-#define GFBGRAPH_IS_GOA_AUTHORIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_GOA_AUTHORIZER))
-#define GFBGRAPH_GOA_AUTHORIZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_GOA_AUTHORIZER,GFBGraphGoaAuthorizerClass))
+#define GFBGRAPH_TYPE_GOA_AUTHORIZER (gfbgraph_goa_authorizer_get_type())
+#define GFBGRAPH_GOA_AUTHORIZER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_GOA_AUTHORIZER,GFBGraphGoaAuthorizer))
+#define GFBGRAPH_GOA_AUTHORIZER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_GOA_AUTHORIZER,GFBGraphGoaAuthorizerClass))
+#define GFBGRAPH_IS_GOA_AUTHORIZER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_GOA_AUTHORIZER))
+#define GFBGRAPH_IS_GOA_AUTHORIZER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_GOA_AUTHORIZER))
+#define GFBGRAPH_GOA_AUTHORIZER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_GOA_AUTHORIZER,GFBGraphGoaAuthorizerClass))
typedef struct _GFBGraphGoaAuthorizer GFBGraphGoaAuthorizer;
typedef struct _GFBGraphGoaAuthorizerClass GFBGraphGoaAuthorizerClass;
typedef struct _GFBGraphGoaAuthorizerPrivate GFBGraphGoaAuthorizerPrivate;
struct _GFBGraphGoaAuthorizer {
- GObject parent;
+ GObject parent;
- /*< private >*/
- GFBGraphGoaAuthorizerPrivate *priv;
+ /*< private >*/
+ GFBGraphGoaAuthorizerPrivate *priv;
};
struct _GFBGraphGoaAuthorizerClass {
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
GType gfbgraph_goa_authorizer_get_type (void) G_GNUC_CONST;
diff --git a/gfbgraph/gfbgraph-node.c b/gfbgraph/gfbgraph-node.c
index 9ce84bf..6f83ba1 100644
--- a/gfbgraph/gfbgraph-node.c
+++ b/gfbgraph/gfbgraph-node.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -41,215 +42,214 @@
enum
{
- PROP_0,
-
- PROP_ID,
- PROP_LINK,
- PROP_CREATEDTIME,
- PROP_UPDATEDTIME
+ PROP_0,
+ PROP_ID,
+ PROP_LINK,
+ PROP_CREATEDTIME,
+ PROP_UPDATEDTIME
};
struct _GFBGraphNodePrivate {
- GList *connections;
- gchar *id;
- gchar *link;
- gchar *created_time;
- gchar *updated_time;
+ GList *connections;
+ gchar *id;
+ gchar *link;
+ gchar *created_time;
+ gchar *updated_time;
};
typedef struct {
- GList *list;
- GType node_type;
- GFBGraphAuthorizer *authorizer;
+ GList *list;
+ GType node_type;
+ GFBGraphAuthorizer *authorizer;
} GFBGraphNodeConnectionAsyncData;
-GQuark
-gfbgraph_node_error_quark (void)
-{
- return g_quark_from_static_string ("gfbgraph-node-error-quark");
-}
-
-static void gfbgraph_node_init (GFBGraphNode *obj);
-static void gfbgraph_node_class_init (GFBGraphNodeClass *klass);
-static void gfbgraph_node_finalize (GObject *object);
-static void gfbgraph_node_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gfbgraph_node_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-static void gfbgraph_node_connection_async_data_free (GFBGraphNodeConnectionAsyncData *data);
-static void gfbgraph_node_get_connection_nodes_async_thread (GSimpleAsyncResult *simple_async, GFBGraphNode *node, GCancellable cancellable);
-
-#define GFBGRAPH_NODE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_NODE, GFBGraphNodePrivate))
+#define GFBGRAPH_NODE_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_NODE, GFBGraphNodePrivate))
static GObjectClass *parent_class = NULL;
G_DEFINE_TYPE (GFBGraphNode, gfbgraph_node, G_TYPE_OBJECT);
-static void
-gfbgraph_node_class_init (GFBGraphNodeClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- gobject_class->finalize = gfbgraph_node_finalize;
- gobject_class->set_property = gfbgraph_node_set_property;
- gobject_class->get_property = gfbgraph_node_get_property;
-
- g_type_class_add_private (gobject_class, sizeof(GFBGraphNodePrivate));
-
- /**
- * GFBGraphNode:id:
- *
- * The node ID. All nodes have one of this.
- **/
- g_object_class_install_property (gobject_class,
- PROP_ID,
- g_param_spec_string ("id",
- "The Facebook node ID", "Every node in the Facebook Graph is identified by his ID",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphNode:link:
- *
- * The node link. An URL to the node on Facebook.
- **/
- g_object_class_install_property (gobject_class,
- PROP_LINK,
- g_param_spec_string ("link",
- "The link to the node", "A link (url) to the node on Facebook",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphNode:created_time:
- *
- * The time the node was initially published. Is an ISO 8601 encoded date.
- **/
- g_object_class_install_property (gobject_class,
- PROP_CREATEDTIME,
- g_param_spec_string ("created_time",
- "The node creation time", "An ISO 8601 encoded date when the node was initially published",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphNode:updated_time:
- *
- * The last time the node was updated. Is an ISO 8601 encoded date.
- **/
- g_object_class_install_property (gobject_class,
- PROP_UPDATEDTIME,
- g_param_spec_string ("updated_time",
- "The node updated time", "An ISO 8601 encoded date when the node was updated",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-}
-
-static void
-gfbgraph_node_init (GFBGraphNode *obj)
+GQuark
+gfbgraph_node_error_quark (void)
{
- obj->priv = GFBGRAPH_NODE_GET_PRIVATE(obj);
+ return g_quark_from_static_string ("gfbgraph-node-error-quark");
}
static void
gfbgraph_node_finalize (GObject *object)
{
- GFBGraphNodePrivate *priv;
-
- priv = GFBGRAPH_NODE_GET_PRIVATE (object);
+ GFBGraphNodePrivate *priv = GFBGRAPH_NODE_GET_PRIVATE (object);
- if (priv->id)
- g_free (priv->id);
- if (priv->link)
- g_free (priv->link);
- if (priv->created_time)
- g_free (priv->created_time);
+ if (priv->id)
+ g_free (priv->id);
+ if (priv->link)
+ g_free (priv->link);
+ if (priv->created_time)
+ g_free (priv->created_time);
- G_OBJECT_CLASS(parent_class)->finalize (object);
+ G_OBJECT_CLASS(parent_class)->finalize (object);
}
static void
-gfbgraph_node_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gfbgraph_node_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- GFBGraphNodePrivate *priv;
-
- priv = GFBGRAPH_NODE_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_ID:
- if (priv->id)
- g_free (priv->id);
- priv->id = g_strdup (g_value_get_string (value));
- break;
- case PROP_LINK:
- if (priv->link)
- g_free (priv->link);
- priv->link = g_strdup (g_value_get_string (value));
- break;
- case PROP_CREATEDTIME:
- if (priv->created_time)
- g_free (priv->created_time);
- priv->created_time = g_strdup (g_value_get_string (value));
- break;
- case PROP_UPDATEDTIME:
- if (priv->updated_time)
- g_free (priv->updated_time);
- priv->updated_time = g_strdup (g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GFBGraphNodePrivate *priv = GFBGRAPH_NODE_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_ID:
+ if (priv->id)
+ g_free (priv->id);
+ priv->id = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_LINK:
+ if (priv->link)
+ g_free (priv->link);
+ priv->link = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_CREATEDTIME:
+ if (priv->created_time)
+ g_free (priv->created_time);
+ priv->created_time = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_UPDATEDTIME:
+ if (priv->updated_time)
+ g_free (priv->updated_time);
+ priv->updated_time = g_strdup (g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_node_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gfbgraph_node_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- GFBGraphNodePrivate *priv;
-
- priv = GFBGRAPH_NODE_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_ID:
- g_value_set_string (value, priv->id);
- break;
- case PROP_LINK:
- g_value_set_string (value, priv->link);
- break;
- case PROP_CREATEDTIME:
- g_value_set_string (value, priv->created_time);
- break;
- case PROP_UPDATEDTIME:
- g_value_set_string (value, priv->updated_time);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GFBGraphNodePrivate *priv = GFBGRAPH_NODE_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_ID:
+ g_value_set_string (value, priv->id);
+ break;
+ case PROP_LINK:
+ g_value_set_string (value, priv->link);
+ break;
+ case PROP_CREATEDTIME:
+ g_value_set_string (value, priv->created_time);
+ break;
+ case PROP_UPDATEDTIME:
+ g_value_set_string (value, priv->updated_time);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_node_connection_async_data_free (GFBGraphNodeConnectionAsyncData *data)
+gfbgraph_node_class_init (GFBGraphNodeClass *klass)
{
- g_list_free (data->list);
- g_object_unref (data->authorizer);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ parent_class = g_type_class_peek_parent (klass);
+
+ gobject_class->finalize = gfbgraph_node_finalize;
+ gobject_class->set_property = gfbgraph_node_set_property;
+ gobject_class->get_property = gfbgraph_node_get_property;
+
+ g_type_class_add_private (gobject_class, sizeof(GFBGraphNodePrivate));
+
+ /**
+ * GFBGraphNode:id:
+ *
+ * The node ID. All nodes have one of this.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_ID,
+ g_param_spec_string ("id",
+ "The Facebook node ID",
+ "Every node in the Facebook Graph is identified by his ID",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphNode:link:
+ *
+ * The node link. An URL to the node on Facebook.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_LINK,
+ g_param_spec_string ("link",
+ "The link to the node",
+ "A link (url) to the node on Facebook",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphNode:created_time:
+ *
+ * The time the node was initially published. Is an ISO 8601 encoded date.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_CREATEDTIME,
+ g_param_spec_string ("created_time",
+ "The node creation time",
+ "An ISO 8601 encoded date when the node was initially published",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphNode:updated_time:
+ *
+ * The last time the node was updated. Is an ISO 8601 encoded date.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_UPDATEDTIME,
+ g_param_spec_string ("updated_time",
+ "The node updated time",
+ "An ISO 8601 encoded date when the node was updated",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
- g_slice_free (GFBGraphNodeConnectionAsyncData, data);
+static void
+gfbgraph_node_init (GFBGraphNode *obj)
+{
+ obj->priv = GFBGRAPH_NODE_GET_PRIVATE(obj);
}
+/* --- Private Functions --- */
static void
-gfbgraph_node_get_connection_nodes_async_thread (GSimpleAsyncResult *simple_async, GFBGraphNode *node, GCancellable cancellable)
+connection_async_data_free (GFBGraphNodeConnectionAsyncData *data)
{
- GFBGraphNodeConnectionAsyncData *data;
- GError *error;
+ g_list_free (data->list);
+ g_object_unref (data->authorizer);
- data = (GFBGraphNodeConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
+ g_slice_free (GFBGraphNodeConnectionAsyncData, data);
+}
- error = NULL;
- data->list = gfbgraph_node_get_connection_nodes (node, data->node_type, data->authorizer, &error);
- if (error != NULL)
- g_simple_async_result_take_error (simple_async, error);
+static void
+get_connection_nodes_async_thread (GSimpleAsyncResult *simple_async,
+ GFBGraphNode *node,
+ GCancellable cancellable)
+{
+ GFBGraphNodeConnectionAsyncData *data;
+ GError *error = NULL;
+
+ data = (GFBGraphNodeConnectionAsyncData *)g_simple_async_result_get_op_res_gpointer (simple_async);
+ data->list = gfbgraph_node_get_connection_nodes (node,
+ data->node_type,
+ data->authorizer,
+ &error);
+ if (error != NULL)
+ g_simple_async_result_take_error (simple_async, error);
}
/**
@@ -259,10 +259,10 @@ gfbgraph_node_get_connection_nodes_async_thread (GSimpleAsyncResult *simple_asyn
*
* Returns: (transfer full): a new #GFBGraphNode; unref with g_object_unref()
**/
-GFBGraphNode*
+GFBGraphNode *
gfbgraph_node_new (void)
{
- return GFBGRAPH_NODE (g_object_new (GFBGRAPH_TYPE_NODE, NULL));
+ return GFBGRAPH_NODE (g_object_new (GFBGRAPH_TYPE_NODE, NULL));
}
/**
@@ -276,38 +276,41 @@ gfbgraph_node_new (void)
*
* Returns: (transfer full): a #GFBGraphNode or %NULL.
**/
-GFBGraphNode*
-gfbgraph_node_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GType node_type, GError **error)
+GFBGraphNode *
+gfbgraph_node_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GType node_type,
+ GError **error)
{
- GFBGraphNode *node;
- RestProxyCall *rest_call;
-
- g_return_val_if_fail ((strlen (id) > 0), NULL);
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
- g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
-
- rest_call = gfbgraph_new_rest_call (authorizer);
- rest_proxy_call_set_method (rest_call, "GET");
- rest_proxy_call_set_function (rest_call, id);
-
- node = NULL;
- if (rest_proxy_call_sync (rest_call, error)) {
- JsonParser *jparser;
- JsonNode *jnode;
- const gchar *payload;
-
- payload = rest_proxy_call_get_payload (rest_call);
- jparser = json_parser_new ();
- if (json_parser_load_from_data (jparser, payload, -1, error)) {
- jnode = json_parser_get_root (jparser);
- node = GFBGRAPH_NODE (json_gobject_deserialize (node_type, jnode));
- }
-
- g_object_unref (jparser);
- }
-
- g_object_unref (rest_call);
- return node;
+ GFBGraphNode *node = NULL;
+ RestProxyCall *rest_call;
+
+ g_return_val_if_fail ((strlen (id) > 0), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
+ g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
+
+ rest_call = gfbgraph_new_rest_call (authorizer);
+ rest_proxy_call_set_method (rest_call, "GET");
+ rest_proxy_call_set_function (rest_call, id);
+
+ if (rest_proxy_call_sync (rest_call, error)) {
+ JsonParser *jparser;
+ JsonNode *jnode;
+ const gchar *payload;
+
+ payload = rest_proxy_call_get_payload (rest_call);
+ jparser = json_parser_new ();
+ if (json_parser_load_from_data (jparser, payload, -1, error)) {
+ jnode = json_parser_get_root (jparser);
+ node = GFBGRAPH_NODE (json_gobject_deserialize (node_type, jnode));
+ }
+
+ g_object_unref (jparser);
+ }
+
+ g_object_unref (rest_call);
+
+ return node;
}
/**
@@ -318,12 +321,12 @@ gfbgraph_node_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GTyp
*
* Returns: (transfer none): the node ID.
**/
-const gchar*
+const gchar *
gfbgraph_node_get_id (GFBGraphNode *node)
{
- g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
- return node->priv->id;
+ return node->priv->id;
}
/**
@@ -334,12 +337,12 @@ gfbgraph_node_get_id (GFBGraphNode *node)
*
* Returns: (transfer none): the URL.
**/
-const gchar*
+const gchar *
gfbgraph_node_get_link (GFBGraphNode *node)
{
- g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
- return node->priv->link;
+ return node->priv->link;
}
/**
@@ -350,12 +353,12 @@ gfbgraph_node_get_link (GFBGraphNode *node)
*
* Returns: (transfer none): an ISO 8601 encoded date when the node was initially published.
**/
-const gchar*
+const gchar *
gfbgraph_node_get_created_time (GFBGraphNode *node)
{
- g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
- return node->priv->created_time;
+ return node->priv->created_time;
}
/**
@@ -366,12 +369,12 @@ gfbgraph_node_get_created_time (GFBGraphNode *node)
*
* Returns: (transfer none): an ISO 8601 encoded date when the node was updated.
**/
-const gchar*
+const gchar *
gfbgraph_node_get_updated_time (GFBGraphNode *node)
{
- g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
- return node->priv->updated_time;
+ return node->priv->updated_time;
}
/**
@@ -383,14 +386,15 @@ gfbgraph_node_get_updated_time (GFBGraphNode *node)
* and the Graph API returns the ID of the new created node.
**/
void
-gfbgraph_node_set_id (GFBGraphNode *node, const gchar *id)
+gfbgraph_node_set_id (GFBGraphNode *node,
+ const gchar *id)
{
- g_return_if_fail (GFBGRAPH_IS_NODE (node));
- g_return_if_fail (id != NULL);
+ g_return_if_fail (GFBGRAPH_IS_NODE (node));
+ g_return_if_fail (id != NULL);
- g_object_set (G_OBJECT (node),
- "id", id,
- NULL);
+ g_object_set (G_OBJECT (node),
+ "id", id,
+ NULL);
}
/**
@@ -406,59 +410,61 @@ gfbgraph_node_set_id (GFBGraphNode *node, const gchar *id)
*
* Returns: (element-type GFBGraphNode) (transfer full): a newly-allocated #GList of type @node_type objects with the found nodes.
**/
-GList*
-gfbgraph_node_get_connection_nodes (GFBGraphNode *node, GType node_type, GFBGraphAuthorizer *authorizer, GError **error)
+GList *
+gfbgraph_node_get_connection_nodes (GFBGraphNode *node,
+ GType node_type,
+ GFBGraphAuthorizer *authorizer,
+ GError **error)
{
- GFBGraphNodePrivate *priv;
- GList *nodes_list = NULL;
- GFBGraphNode *connected_node;
- RestProxyCall *rest_call;
- gchar *function_path;
-
- g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
- g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
-
- priv = GFBGRAPH_NODE_GET_PRIVATE (node);
-
- /* Dummy node just for test */
- connected_node = g_object_new (node_type, NULL);
- if (GFBGRAPH_IS_CONNECTABLE (connected_node) == FALSE) {
- g_set_error (error, GFBGRAPH_NODE_ERROR,
- GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
- "The given node type (%s) doesn't implement connectable interface", g_type_name (node_type));
- return NULL;
- }
-
- if (gfbgraph_connectable_is_connectable_to (GFBGRAPH_CONNECTABLE (connected_node), G_OBJECT_TYPE (node)) == FALSE) {
- g_set_error (error, GFBGRAPH_NODE_ERROR,
- GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
- "The given node type (%s) can't connect with the node", g_type_name (node_type));
- return NULL;
- }
-
- rest_call = gfbgraph_new_rest_call (authorizer);
- rest_proxy_call_set_method (rest_call, "GET");
- function_path = g_strdup_printf ("%s/%s",
- priv->id,
- gfbgraph_connectable_get_connection_path (GFBGRAPH_CONNECTABLE (connected_node),
- G_OBJECT_TYPE (node)));
- rest_proxy_call_set_function (rest_call, function_path);
- g_free (function_path);
-
- if (rest_proxy_call_sync (rest_call, error)) {
- const gchar *payload;
-
- payload = rest_proxy_call_get_payload (rest_call);
- nodes_list = gfbgraph_connectable_parse_connected_data (GFBGRAPH_CONNECTABLE (connected_node), payload, error);
- }
-
- /* We don't need this node again */
- g_object_unref (connected_node);
- g_object_unref (rest_call);
-
-
- return nodes_list;
+ GFBGraphNodePrivate *priv;
+ GList *nodes_list = NULL;
+ GFBGraphNode *connected_node;
+ RestProxyCall *rest_call;
+ gchar *function_path;
+
+ g_return_val_if_fail (GFBGRAPH_IS_NODE (node), NULL);
+ g_return_val_if_fail (g_type_is_a (node_type, GFBGRAPH_TYPE_NODE), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
+
+ priv = GFBGRAPH_NODE_GET_PRIVATE (node);
+
+ /* Dummy node just for test */
+ connected_node = g_object_new (node_type, NULL);
+ if (GFBGRAPH_IS_CONNECTABLE (connected_node) == FALSE) {
+ g_set_error (error, GFBGRAPH_NODE_ERROR,
+ GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
+ "The given node type (%s) doesn't implement connectable interface",
+ g_type_name (node_type));
+ return NULL;
+ }
+
+ if (gfbgraph_connectable_is_connectable_to (GFBGRAPH_CONNECTABLE (connected_node), G_OBJECT_TYPE (node)) == FALSE) {
+ g_set_error (error, GFBGRAPH_NODE_ERROR,
+ GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
+ "The given node type (%s) can't connect with the node",
+ g_type_name (node_type));
+ return NULL;
+ }
+
+ rest_call = gfbgraph_new_rest_call (authorizer);
+ rest_proxy_call_set_method (rest_call, "GET");
+ function_path = g_strdup_printf ("%s/%s",
+ priv->id,
+ gfbgraph_connectable_get_connection_path (GFBGRAPH_CONNECTABLE (connected_node),
+ G_OBJECT_TYPE (node)));
+ rest_proxy_call_set_function (rest_call, function_path);
+ g_free (function_path);
+
+ if (rest_proxy_call_sync (rest_call, error)) {
+ const gchar *payload = rest_proxy_call_get_payload (rest_call);
+ nodes_list = gfbgraph_connectable_parse_connected_data (GFBGRAPH_CONNECTABLE (connected_node), payload, error);
+ }
+
+ /* We don't need this node again */
+ g_object_unref (connected_node);
+ g_object_unref (rest_call);
+
+ return nodes_list;
}
/**
@@ -477,28 +483,41 @@ gfbgraph_node_get_connection_nodes (GFBGraphNode *node, GType node_type, GFBGrap
* to get the list of connected nodes.
**/
void
-gfbgraph_node_get_connection_nodes_async (GFBGraphNode *node, GType node_type, GFBGraphAuthorizer *authorizer, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+gfbgraph_node_get_connection_nodes_async (GFBGraphNode *node,
+ GType node_type,
+ GFBGraphAuthorizer *authorizer,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- GSimpleAsyncResult *result;
- GFBGraphNodeConnectionAsyncData *data;
-
- g_return_if_fail (GFBGRAPH_IS_NODE (node));
- g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
- g_return_if_fail (callback != NULL);
-
- result = g_simple_async_result_new (G_OBJECT (node), callback, user_data, gfbgraph_node_get_connection_nodes_async);
- g_simple_async_result_set_check_cancellable (result, cancellable);
-
- data = g_slice_new (GFBGraphNodeConnectionAsyncData);
- data->list = NULL;
- data->node_type = node_type;
- data->authorizer = authorizer;
- g_object_ref (data->authorizer);
-
- g_simple_async_result_set_op_res_gpointer (result, data, (GDestroyNotify) gfbgraph_node_connection_async_data_free);
- g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc) gfbgraph_node_get_connection_nodes_async_thread, G_PRIORITY_DEFAULT, cancellable);
-
- g_object_unref (result);
+ GSimpleAsyncResult *result;
+ GFBGraphNodeConnectionAsyncData *data;
+
+ g_return_if_fail (GFBGRAPH_IS_NODE (node));
+ g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+ g_return_if_fail (callback != NULL);
+
+ result = g_simple_async_result_new (G_OBJECT (node),
+ callback,
+ user_data,
+ gfbgraph_node_get_connection_nodes_async);
+ g_simple_async_result_set_check_cancellable (result, cancellable);
+
+ data = g_slice_new (GFBGraphNodeConnectionAsyncData);
+ data->list = NULL;
+ data->node_type = node_type;
+ data->authorizer = authorizer;
+ g_object_ref (data->authorizer);
+
+ g_simple_async_result_set_op_res_gpointer (result,
+ data,
+ (GDestroyNotify)connection_async_data_free);
+ g_simple_async_result_run_in_thread (result,
+ (GSimpleAsyncThreadFunc)get_connection_nodes_async_thread,
+ G_PRIORITY_DEFAULT,
+ cancellable);
+
+ g_object_unref (result);
}
/**
@@ -513,21 +532,23 @@ gfbgraph_node_get_connection_nodes_async (GFBGraphNode *node, GType node_type, G
* Returns: (element-type GFBGraphNode) (transfer full): a newly-allocated #GList of type #node_type objects with the found nodes.
**/
GList*
-gfbgraph_node_get_connection_nodes_async_finish (GFBGraphNode *node, GAsyncResult *result, GError **error)
+gfbgraph_node_get_connection_nodes_async_finish (GFBGraphNode *node,
+ GAsyncResult *result,
+ GError **error)
{
- GSimpleAsyncResult *simple_async;
- GFBGraphNodeConnectionAsyncData *data;
+ GSimpleAsyncResult *simple_async;
+ GFBGraphNodeConnectionAsyncData *data;
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (node), gfbgraph_node_get_connection_nodes_async), NULL);
- g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (node), gfbgraph_node_get_connection_nodes_async), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
- simple_async = G_SIMPLE_ASYNC_RESULT (result);
+ simple_async = G_SIMPLE_ASYNC_RESULT (result);
- if (g_simple_async_result_propagate_error (simple_async, error))
- return NULL;
+ if (g_simple_async_result_propagate_error (simple_async, error))
+ return NULL;
- data = (GFBGraphNodeConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
- return data->list;
+ data = (GFBGraphNodeConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
+ return data->list;
}
/**
@@ -543,79 +564,85 @@ gfbgraph_node_get_connection_nodes_async_finish (GFBGraphNode *node, GAsyncResul
* Returns: TRUE on sucess, FALSE if an error ocurred.
**/
gboolean
-gfbgraph_node_append_connection (GFBGraphNode *node, GFBGraphNode *connect_node, GFBGraphAuthorizer *authorizer, GError **error)
+gfbgraph_node_append_connection (GFBGraphNode *node,
+ GFBGraphNode *connect_node,
+ GFBGraphAuthorizer *authorizer,
+ GError **error)
{
- GFBGraphNodePrivate *priv;
- RestProxyCall *rest_call;
- GHashTable *params;
- gchar *function_path;
- gboolean success;
-
- g_return_val_if_fail (GFBGRAPH_IS_NODE (node), FALSE);
- g_return_val_if_fail (GFBGRAPH_IS_NODE (connect_node), FALSE);
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), FALSE);
-
- if (GFBGRAPH_IS_CONNECTABLE (connect_node) == FALSE) {
- g_set_error (error, GFBGRAPH_NODE_ERROR,
- GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
- "The given node type (%s) doesn't implement connectable interface", G_OBJECT_TYPE_NAME (connect_node));
- return FALSE;
- }
-
- if (gfbgraph_connectable_is_connectable_to (GFBGRAPH_CONNECTABLE (connect_node), G_OBJECT_TYPE (node)) == FALSE) {
- g_set_error (error, GFBGRAPH_NODE_ERROR,
- GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
- "The given node type (%s) can't append a %s connection", G_OBJECT_TYPE_NAME (node), G_OBJECT_TYPE_NAME (connect_node));
- return FALSE;
- }
-
- priv = GFBGRAPH_NODE_GET_PRIVATE (node);
-
- success = FALSE;
- rest_call = gfbgraph_new_rest_call (authorizer);
- rest_proxy_call_set_method (rest_call, "POST");
- function_path = g_strdup_printf ("%s/%s",
- priv->id,
- gfbgraph_connectable_get_connection_path (GFBGRAPH_CONNECTABLE (connect_node),
- G_OBJECT_TYPE (node)));
- rest_proxy_call_set_function (rest_call, function_path);
- g_free (function_path);
-
- params = gfbgraph_connectable_get_connection_post_params (GFBGRAPH_CONNECTABLE (connect_node), G_OBJECT_TYPE (node));
- if (g_hash_table_size (params) > 0) {
- GHashTableIter iter;
- const gchar *key;
- const gchar *value;
-
- g_hash_table_iter_init (&iter, params);
- while (g_hash_table_iter_next (&iter, (gpointer *) &key, (gpointer *) &value)) {
- rest_proxy_call_add_param (rest_call, key, value);
- }
- }
-
- if (rest_proxy_call_sync (rest_call, error)) {
- const gchar *payload;
- JsonParser *jparser;
- JsonNode *jnode;
- JsonReader *jreader;
-
- payload = rest_proxy_call_get_payload (rest_call);
- /* Parssing the new ID */
- jparser = json_parser_new ();
- json_parser_load_from_data (jparser, payload, -1, error);
- jnode = json_parser_get_root (jparser);
- jreader = json_reader_new (jnode);
-
- json_reader_read_element (jreader, 0);
- gfbgraph_node_set_id (connect_node,
- json_reader_get_string_value (jreader));
- json_reader_end_element (jreader);
-
- g_object_unref (jreader);
- g_object_unref (jparser);
- success = TRUE;
- }
- g_object_unref (rest_call);
-
- return success;
+ GFBGraphNodePrivate *priv;
+ RestProxyCall *rest_call;
+ GHashTable *params;
+ gchar *function_path;
+ gboolean success = FALSE;
+
+ g_return_val_if_fail (GFBGRAPH_IS_NODE (node), FALSE);
+ g_return_val_if_fail (GFBGRAPH_IS_NODE (connect_node), FALSE);
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), FALSE);
+
+ if (GFBGRAPH_IS_CONNECTABLE (connect_node) == FALSE) {
+ g_set_error (error, GFBGRAPH_NODE_ERROR,
+ GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
+ "The given node type (%s) doesn't implement connectable interface",
+ G_OBJECT_TYPE_NAME (connect_node));
+ return FALSE;
+ }
+
+ if (gfbgraph_connectable_is_connectable_to (GFBGRAPH_CONNECTABLE (connect_node), G_OBJECT_TYPE (node)) == FALSE) {
+ g_set_error (error, GFBGRAPH_NODE_ERROR,
+ GFBGRAPH_NODE_ERROR_NO_CONNECTABLE,
+ "The given node type (%s) can't append a %s connection",
+ G_OBJECT_TYPE_NAME (node),
+ G_OBJECT_TYPE_NAME (connect_node));
+ return FALSE;
+ }
+
+ priv = GFBGRAPH_NODE_GET_PRIVATE (node);
+
+ rest_call = gfbgraph_new_rest_call (authorizer);
+ rest_proxy_call_set_method (rest_call, "POST");
+ function_path = g_strdup_printf ("%s/%s",
+ priv->id,
+ gfbgraph_connectable_get_connection_path (GFBGRAPH_CONNECTABLE (connect_node),
+ G_OBJECT_TYPE (node)));
+ rest_proxy_call_set_function (rest_call, function_path);
+ g_free (function_path);
+
+ params = gfbgraph_connectable_get_connection_post_params (GFBGRAPH_CONNECTABLE (connect_node),
+ G_OBJECT_TYPE (node));
+ if (g_hash_table_size (params) > 0) {
+ GHashTableIter iter;
+ const gchar *key;
+ const gchar *value;
+
+ g_hash_table_iter_init (&iter, params);
+ while (g_hash_table_iter_next (&iter, (gpointer *) &key, (gpointer *) &value)) {
+ rest_proxy_call_add_param (rest_call, key, value);
+ }
+ }
+
+ if (rest_proxy_call_sync (rest_call, error)) {
+ const gchar *payload;
+ JsonParser *jparser;
+ JsonNode *jnode;
+ JsonReader *jreader;
+
+ payload = rest_proxy_call_get_payload (rest_call);
+ /* Parssing the new ID */
+ jparser = json_parser_new ();
+ json_parser_load_from_data (jparser, payload, -1, error);
+ jnode = json_parser_get_root (jparser);
+ jreader = json_reader_new (jnode);
+
+ json_reader_read_element (jreader, 0);
+ gfbgraph_node_set_id (connect_node,
+ json_reader_get_string_value (jreader));
+ json_reader_end_element (jreader);
+
+ g_object_unref (jreader);
+ g_object_unref (jparser);
+ success = TRUE;
+ }
+ g_object_unref (rest_call);
+
+ return success;
}
diff --git a/gfbgraph/gfbgraph-node.h b/gfbgraph/gfbgraph-node.h
index c177a82..e637312 100644
--- a/gfbgraph/gfbgraph-node.h
+++ b/gfbgraph/gfbgraph-node.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -25,12 +26,17 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_NODE (gfbgraph_node_get_type())
-#define GFBGRAPH_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_NODE,GFBGraphNode))
-#define GFBGRAPH_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_NODE,GFBGraphNodeClass))
-#define GFBGRAPH_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_NODE))
-#define GFBGRAPH_IS_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_NODE))
-#define GFBGRAPH_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_NODE,GFBGraphNodeClass))
+#define GFBGRAPH_TYPE_NODE (gfbgraph_node_get_type())
+#define GFBGRAPH_NODE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_NODE,GFBGraphNode))
+#define GFBGRAPH_NODE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_NODE,GFBGraphNodeClass))
+#define GFBGRAPH_IS_NODE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_NODE))
+#define GFBGRAPH_IS_NODE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_NODE))
+#define GFBGRAPH_NODE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_NODE,GFBGraphNodeClass))
#define GFBGRAPH_NODE_ERROR gfbgraph_node_error_quark ()
@@ -41,49 +47,55 @@ typedef struct _GFBGraphNodePrivate GFBGraphNodePrivate;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GFBGraphNode, g_object_unref)
struct _GFBGraphNode {
- GObject parent;
+ GObject parent;
- /*< private >*/
- GFBGraphNodePrivate *priv;
+ /*< private >*/
+ GFBGraphNodePrivate *priv;
};
struct _GFBGraphNodeClass {
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
typedef enum {
- GFBGRAPH_NODE_ERROR_NO_CONNECTIONABLE = 1,
- GFBGRAPH_NODE_ERROR_NO_CONNECTABLE
+ GFBGRAPH_NODE_ERROR_NO_CONNECTIONABLE = 1,
+ GFBGRAPH_NODE_ERROR_NO_CONNECTABLE
} GFBGraphNodeError;
GType gfbgraph_node_get_type (void) G_GNUC_CONST;
GQuark gfbgraph_node_error_quark (void) G_GNUC_CONST;
GFBGraphNode* gfbgraph_node_new (void);
-GFBGraphNode* gfbgraph_node_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GType node_type, GError **error);
+GFBGraphNode* gfbgraph_node_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GType node_type,
+ GError **error);
const gchar* gfbgraph_node_get_id (GFBGraphNode *node);
const gchar* gfbgraph_node_get_link (GFBGraphNode *node);
const gchar* gfbgraph_node_get_created_time (GFBGraphNode *node);
const gchar* gfbgraph_node_get_updated_time (GFBGraphNode *node);
-void gfbgraph_node_set_id (GFBGraphNode *node, const gchar *id);
-
-GList* gfbgraph_node_get_connection_nodes (GFBGraphNode *node,
- GType node_type,
- GFBGraphAuthorizer *authorizer,
- GError **error);
-void gfbgraph_node_get_connection_nodes_async (GFBGraphNode *node,
- GType node_type,
- GFBGraphAuthorizer *authorizer,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-GList* gfbgraph_node_get_connection_nodes_async_finish (GFBGraphNode *node,
- GAsyncResult *result,
- GError **error);
-
-gboolean gfbgraph_node_append_connection (GFBGraphNode *node, GFBGraphNode *connect_node, GFBGraphAuthorizer *authorizer, GError **error);
+void gfbgraph_node_set_id (GFBGraphNode *node,
+ const gchar *id);
+
+GList* gfbgraph_node_get_connection_nodes (GFBGraphNode *node,
+ GType node_type,
+ GFBGraphAuthorizer *authorizer,
+ GError **error);
+void gfbgraph_node_get_connection_nodes_async (GFBGraphNode *node,
+ GType node_type,
+ GFBGraphAuthorizer *authorizer,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+GList* gfbgraph_node_get_connection_nodes_async_finish (GFBGraphNode *node,
+ GAsyncResult *result,
+ GError **error);
+gboolean gfbgraph_node_append_connection (GFBGraphNode *node,
+ GFBGraphNode *connect_node,
+ GFBGraphAuthorizer *authorizer,
+ GError **error);
G_END_DECLS
diff --git a/gfbgraph/gfbgraph-photo.c b/gfbgraph/gfbgraph-photo.c
index 69eb98d..af3cfb6 100644
--- a/gfbgraph/gfbgraph-photo.c
+++ b/gfbgraph/gfbgraph-photo.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -37,331 +38,353 @@
#include <libsoup/soup-requester.h>
enum {
- PROP_0,
-
- PROP_NAME,
- PROP_SOURCE,
- PROP_HEIGHT,
- PROP_WIDTH,
- PROP_IMAGES
+ PROP_0,
+ PROP_NAME,
+ PROP_SOURCE,
+ PROP_HEIGHT,
+ PROP_WIDTH,
+ PROP_IMAGES
};
struct _GFBGraphPhotoPrivate {
- gchar *name;
- gchar *source;
- guint width;
- guint height;
- GList *images;
- GFBGraphPhotoImage *hires_image;
+ gchar *name;
+ gchar *source;
+ guint width;
+ guint height;
+ GList *images;
+ GFBGraphPhotoImage *hires_image;
};
-static void gfbgraph_photo_init (GFBGraphPhoto *obj);
-static void gfbgraph_photo_class_init (GFBGraphPhotoClass *klass);
-static void gfbgraph_photo_finalize (GObject *obj);
-static void gfbgraph_photo_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gfbgraph_photo_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-static void gfbgraph_photo_connectable_iface_init (GFBGraphConnectableInterface *iface);
-GHashTable* gfbgraph_photo_get_connection_post_params (GFBGraphConnectable *self, GType node_type);
-
-static void gfbgraph_photo_serializable_iface_init (JsonSerializableIface *iface);
-JsonNode *gfbgraph_photo_serializable_serialize_property (JsonSerializable *serializable, const gchar *property_name, const GValue *value, GParamSpec *pspec);
-gboolean gfbgraph_photo_serializable_deserialize_property (JsonSerializable *serializable, const gchar *property_name, GValue *value, GParamSpec *pspec, JsonNode *property_node);
-GParamSpec *gfbgraph_photo_serializable_find_property (JsonSerializable *serializable, const char *name);
-GParamSpec **gfbgraph_photo_serializable_list_properties (JsonSerializable *serializable, guint *n_pspecs);
-void gfbgraph_photo_serializable_set_property (JsonSerializable *serializable, GParamSpec *pspec, const GValue *value);
-void gfbgraph_photo_serializable_get_property (JsonSerializable *serializable, GParamSpec *pspec, GValue *value);
-
-#define GFBGRAPH_PHOTO_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_PHOTO, GFBGraphPhotoPrivate))
+#define GFBGRAPH_PHOTO_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_PHOTO, GFBGraphPhotoPrivate))
static GFBGraphNodeClass *parent_class = NULL;
+static void connectable_iface_init (GFBGraphConnectableInterface *iface);
+static void serializable_iface_init (JsonSerializableIface *iface);
+
G_DEFINE_TYPE_WITH_CODE (GFBGraphPhoto, gfbgraph_photo, GFBGRAPH_TYPE_NODE,
- G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_CONNECTABLE, gfbgraph_photo_connectable_iface_init);
- G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE, gfbgraph_photo_serializable_iface_init););
+ G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_CONNECTABLE, connectable_iface_init);
+ G_IMPLEMENT_INTERFACE (JSON_TYPE_SERIALIZABLE, serializable_iface_init););
static void
-gfbgraph_photo_init (GFBGraphPhoto *obj)
+gfbgraph_photo_finalize (GObject *obj)
{
- obj->priv = GFBGRAPH_PHOTO_GET_PRIVATE(obj);
+ GList *images;
+ GFBGraphPhotoImage *photo_image;
+ GFBGraphPhotoPrivate *priv = GFBGRAPH_PHOTO_GET_PRIVATE (obj);
- obj->priv->images = NULL;
-}
+ images = priv->images;
+ while (images) {
+ photo_image = (GFBGraphPhotoImage *) images->data;
-static void
-gfbgraph_photo_class_init (GFBGraphPhotoClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
- gobject_class->finalize = gfbgraph_photo_finalize;
- gobject_class->set_property = gfbgraph_photo_set_property;
- gobject_class->get_property = gfbgraph_photo_get_property;
-
- g_type_class_add_private (gobject_class, sizeof(GFBGraphPhotoPrivate));
-
- /**
- * GFBGraphPhoto:name:
- *
- * The name of the photo given by his owner.
- **/
- g_object_class_install_property (gobject_class,
- PROP_NAME,
- g_param_spec_string ("name",
- "The photo name", "The name given by the user to the photo",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphPhoto:source:
- *
- * An URI for the photo, with a maximum width or height of 720px.
- **/
- g_object_class_install_property (gobject_class,
- PROP_SOURCE,
- g_param_spec_string ("source",
- "The URI for the photo", "The URI for the photo, with a maximum width or height of 720px",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphPhoto:width:
- *
- * The default photo width, up to 720px.
- **/
- g_object_class_install_property (gobject_class,
- PROP_WIDTH,
- g_param_spec_uint ("width",
- "Photo width", "The photo width",
- 0, G_MAXUINT, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphPhoto:height:
- *
- * The default photo height, up to 720px.
- **/
- g_object_class_install_property (gobject_class,
- PROP_HEIGHT,
- g_param_spec_uint ("height",
- "Photo height", "The photo height",
- 0, G_MAXUINT, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphPhoto:images:
- *
- * A list with the available representations of the photo, in differents sizes
- **/
- g_object_class_install_property (gobject_class,
- PROP_IMAGES,
- g_param_spec_pointer ("images",
- "Sizes of the photo", "The diffents sizes available of the photo",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-}
+ g_free (photo_image->source);
+ g_free (photo_image);
-static void
-gfbgraph_photo_finalize (GObject *obj)
-{
- GFBGraphPhotoPrivate *priv;
- GList *images;
- GFBGraphPhotoImage *photo_image;
-
- priv = GFBGRAPH_PHOTO_GET_PRIVATE (obj);
+ images = g_list_next (images);
+ }
- images = priv->images;
- while (images) {
- photo_image = (GFBGraphPhotoImage *) images->data;
+ g_free (priv->name);
+ g_free (priv->source);
+ g_list_free (priv->images);
- g_free (photo_image->source);
- g_free (photo_image);
+ G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
- images = g_list_next (images);
- }
+static void
+gfbgraph_photo_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ GFBGraphPhotoPrivate *priv = GFBGRAPH_PHOTO_GET_PRIVATE (object);
+ switch (prop_id) {
+ case PROP_NAME:
+ if (priv->name)
g_free (priv->name);
+ priv->name = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_SOURCE:
+ if (priv->source)
g_free (priv->source);
- g_list_free (priv->images);
-
- G_OBJECT_CLASS(parent_class)->finalize (obj);
+ priv->source = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_WIDTH:
+ priv->width = g_value_get_uint (value);
+ break;
+ case PROP_HEIGHT:
+ priv->height = g_value_get_uint (value);
+ break;
+ case PROP_IMAGES:
+ /* TODO: Free GList memory with g_list_free_full */
+ priv->images = g_value_get_pointer (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_photo_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gfbgraph_photo_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- GFBGraphPhotoPrivate *priv;
-
- priv = GFBGRAPH_PHOTO_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_NAME:
- if (priv->name)
- g_free (priv->name);
- priv->name = g_strdup (g_value_get_string (value));
- break;
- case PROP_SOURCE:
- if (priv->source)
- g_free (priv->source);
- priv->source = g_strdup (g_value_get_string (value));
- break;
- case PROP_WIDTH:
- priv->width = g_value_get_uint (value);
- break;
- case PROP_HEIGHT:
- priv->height = g_value_get_uint (value);
- break;
- case PROP_IMAGES:
- /* TODO: Free GList memory with g_list_free_full */
- priv->images = g_value_get_pointer (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GFBGraphPhotoPrivate *priv = GFBGRAPH_PHOTO_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_NAME:
+ g_value_set_string (value, priv->name);
+ break;
+ case PROP_SOURCE:
+ g_value_set_string (value, priv->source);
+ break;
+ case PROP_WIDTH:
+ g_value_set_uint (value, priv->width);
+ break;
+ case PROP_HEIGHT:
+ g_value_set_uint (value, priv->height);
+ break;
+ case PROP_IMAGES:
+ g_value_set_pointer (value, priv->images);
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_photo_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gfbgraph_photo_init (GFBGraphPhoto *obj)
{
- GFBGraphPhotoPrivate *priv;
-
- priv = GFBGRAPH_PHOTO_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_NAME:
- g_value_set_string (value, priv->name);
- break;
- case PROP_SOURCE:
- g_value_set_string (value, priv->source);
- break;
- case PROP_WIDTH:
- g_value_set_uint (value, priv->width);
- break;
- case PROP_HEIGHT:
- g_value_set_uint (value, priv->height);
- break;
- case PROP_IMAGES:
- g_value_set_pointer (value, priv->images);
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ obj->priv = GFBGRAPH_PHOTO_GET_PRIVATE(obj);
+ obj->priv->images = NULL;
}
static void
-gfbgraph_photo_connectable_iface_init (GFBGraphConnectableInterface *iface)
+gfbgraph_photo_class_init (GFBGraphPhotoClass *klass)
{
- GHashTable *connections;
-
- connections = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (connections, (gpointer) g_type_name (GFBGRAPH_TYPE_ALBUM), (gpointer) "photos");
-
- iface->connections = connections;
- iface->get_connection_post_params = gfbgraph_photo_get_connection_post_params;
- iface->parse_connected_data = gfbgraph_connectable_default_parse_connected_data;
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ parent_class = g_type_class_peek_parent (klass);
+ gobject_class->finalize = gfbgraph_photo_finalize;
+ gobject_class->set_property = gfbgraph_photo_set_property;
+ gobject_class->get_property = gfbgraph_photo_get_property;
+
+ g_type_class_add_private (gobject_class, sizeof(GFBGraphPhotoPrivate));
+
+ /**
+ * GFBGraphPhoto:name:
+ *
+ * The name of the photo given by his owner.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_NAME,
+ g_param_spec_string ("name",
+ "The photo name",
+ "The name given by the user to the photo",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphPhoto:source:
+ *
+ * An URI for the photo, with a maximum width or height of 720px.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_SOURCE,
+ g_param_spec_string ("source",
+ "The URI for the photo",
+ "The URI for the photo, with a maximum width or height of 720px",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphPhoto:width:
+ *
+ * The default photo width, up to 720px.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_WIDTH,
+ g_param_spec_uint ("width",
+ "Photo width",
+ "The photo width",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphPhoto:height:
+ *
+ * The default photo height, up to 720px.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_HEIGHT,
+ g_param_spec_uint ("height",
+ "Photo height",
+ "The photo height",
+ 0, G_MAXUINT, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphPhoto:images:
+ *
+ * A list with the available representations of the photo, in differents sizes
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_IMAGES,
+ g_param_spec_pointer ("images",
+ "Sizes of the photo",
+ "The diffents sizes available of the photo",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
}
-GHashTable*
-gfbgraph_photo_get_connection_post_params (GFBGraphConnectable *self, GType node_type)
+/* --- Connectable Interface --- */
+GHashTable *
+get_connection_post_params (GFBGraphConnectable *self,
+ GType node_type)
{
- GHashTable *params;
- GFBGraphPhotoPrivate *priv;
-
- priv = GFBGRAPH_PHOTO_GET_PRIVATE (self);
+ GHashTable *params;
+ GFBGraphPhotoPrivate *priv = GFBGRAPH_PHOTO_GET_PRIVATE (self);
- params = g_hash_table_new (g_str_hash, g_str_equal);
- g_hash_table_insert (params, "message", priv->name);
- /* TODO: Incorpate the "source" param (multipart/form-data) */
+ params = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (params, "message", priv->name);
+ /* TODO: Incorpate the "source" param (multipart/form-data) */
- return params;
+ return params;
}
static void
-gfbgraph_photo_serializable_iface_init (JsonSerializableIface *iface)
+connectable_iface_init (GFBGraphConnectableInterface *iface)
{
- iface->serialize_property = gfbgraph_photo_serializable_serialize_property;
- iface->deserialize_property = gfbgraph_photo_serializable_deserialize_property;
- iface->find_property = gfbgraph_photo_serializable_find_property;
- iface->list_properties = gfbgraph_photo_serializable_list_properties;
- iface->set_property = gfbgraph_photo_serializable_set_property;
- iface->get_property = gfbgraph_photo_serializable_get_property;
+ GHashTable *connections = g_hash_table_new (g_str_hash, g_str_equal);
+
+ g_hash_table_insert (connections,
+ (gpointer) g_type_name (GFBGRAPH_TYPE_ALBUM),
+ (gpointer) "photos");
+
+ iface->connections = connections;
+ iface->get_connection_post_params = get_connection_post_params;
+ iface->parse_connected_data = gfbgraph_connectable_default_parse_connected_data;
}
-JsonNode *
-gfbgraph_photo_serializable_serialize_property (JsonSerializable *serializable, const gchar *property_name, const GValue *value, GParamSpec *pspec)
+/* --- Serializable Interface --- */
+static JsonNode *
+serializable_serialize_property (JsonSerializable *serializable,
+ const gchar *property_name,
+ const GValue *value,
+ GParamSpec *pspec)
{
- JsonNode *node = NULL;
+ JsonNode *node = NULL;
- if (g_strcmp0 ("images", property_name) == 0) {
- } else {
- node = json_serializable_default_serialize_property (serializable, property_name, value, pspec);
- }
+ if (g_strcmp0 ("images", property_name) == 0) {
+ } else {
+ node = json_serializable_default_serialize_property (serializable,
+ property_name,
+ value,
+ pspec);
+ }
- return node;
+ return node;
}
-gboolean
-gfbgraph_photo_serializable_deserialize_property (JsonSerializable *serializable, const gchar *property_name, GValue *value, GParamSpec *pspec, JsonNode *property_node)
+static gboolean
+serializable_deserialize_property (JsonSerializable *serializable,
+ const gchar *property_name,
+ GValue *value,
+ GParamSpec *pspec,
+ JsonNode *property_node)
{
- gboolean res;
-
- if (g_strcmp0 ("images", property_name) == 0) {
- if (JSON_NODE_HOLDS_ARRAY (property_node)) {
- guint i, num_images;
- JsonArray *jarray;
- GList *images;
-
- images = NULL;
- jarray = json_node_get_array (property_node);
- num_images = json_array_get_length (jarray);
- for (i = 0; i < num_images; i++) {
- JsonObject *image_object;
- GFBGraphPhotoImage *photo_image;
-
- image_object = json_array_get_object_element (jarray, i);
- photo_image = g_new0 (GFBGraphPhotoImage, 1);
- photo_image->width = json_object_get_int_member (image_object, "width");
- photo_image->height = json_object_get_int_member (image_object, "height");
- photo_image->source = g_strdup (json_object_get_string_member (image_object, "source"));
-
- images = g_list_append (images, photo_image);
- }
-
- g_value_set_pointer (value, (gpointer *) images);
- res = TRUE;
- } else {
- g_warning ("The 'images' node retrieved from the Facebook Graph API isn't an array, it's holding a %s\n", json_node_type_name (property_node));
- res = FALSE;
- }
- } else {
- res = json_serializable_default_deserialize_property (serializable, property_name, value, pspec, property_node);
- }
-
- return res;
+ gboolean res;
+
+ if (g_strcmp0 ("images", property_name) == 0) {
+ if (JSON_NODE_HOLDS_ARRAY (property_node)) {
+ guint i, num_images;
+ JsonArray *jarray;
+ GList *images = NULL;
+
+ jarray = json_node_get_array (property_node);
+ num_images = json_array_get_length (jarray);
+ for (i = 0; i < num_images; i++) {
+ JsonObject *image_object;
+ GFBGraphPhotoImage *photo_image;
+
+ image_object = json_array_get_object_element (jarray, i);
+ photo_image = g_new0 (GFBGraphPhotoImage, 1);
+ photo_image->width = json_object_get_int_member (image_object,
+ "width");
+ photo_image->height = json_object_get_int_member (image_object,
+ "height");
+ photo_image->source = g_strdup (json_object_get_string_member (image_object,
+ "source"));
+
+ images = g_list_append (images, photo_image);
+ }
+
+ g_value_set_pointer (value, (gpointer *) images);
+ res = TRUE;
+ } else {
+ g_warning ("The 'images' node retrieved from the Facebook Graph API isn't an array,"
+ "it's holding a %s\n",
+ json_node_type_name (property_node));
+ res = FALSE;
+ }
+ } else {
+ res = json_serializable_default_deserialize_property (serializable,
+ property_name,
+ value,
+ pspec,
+ property_node);
+ }
+
+ return res;
}
-GParamSpec*
-gfbgraph_photo_serializable_find_property (JsonSerializable *serializable, const char *name)
+static GParamSpec *
+serializable_find_property (JsonSerializable *serializable,
+ const char *name)
{
- return g_object_class_find_property (G_OBJECT_GET_CLASS (GFBGRAPH_PHOTO (serializable)), name);
+ return g_object_class_find_property (G_OBJECT_GET_CLASS (GFBGRAPH_PHOTO (serializable)),
+ name);
}
-GParamSpec**
-gfbgraph_photo_serializable_list_properties (JsonSerializable *serializable, guint *n_pspecs)
+static GParamSpec**
+serializable_list_properties (JsonSerializable *serializable,
+ guint *n_pspecs)
{
- return g_object_class_list_properties (G_OBJECT_GET_CLASS (GFBGRAPH_PHOTO (serializable)), n_pspecs);
+ return g_object_class_list_properties (G_OBJECT_GET_CLASS (GFBGRAPH_PHOTO (serializable)),
+ n_pspecs);
}
-void
-gfbgraph_photo_serializable_set_property (JsonSerializable *serializable, GParamSpec *pspec, const GValue *value)
+static void
+serializable_set_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ const GValue *value)
{
- g_object_set_property (G_OBJECT (serializable), g_param_spec_get_name (pspec), value);
+ g_object_set_property (G_OBJECT (serializable),
+ g_param_spec_get_name (pspec),
+ value);
}
-void
-gfbgraph_photo_serializable_get_property (JsonSerializable *serializable, GParamSpec *pspec, GValue *value)
+static void
+serializable_get_property (JsonSerializable *serializable,
+ GParamSpec *pspec,
+ GValue *value)
{
- g_object_get_property (G_OBJECT (serializable), g_param_spec_get_name (pspec), value);
+ g_object_get_property (G_OBJECT (serializable),
+ g_param_spec_get_name (pspec),
+ value);
+}
+
+static void
+serializable_iface_init (JsonSerializableIface *iface)
+{
+ iface->serialize_property = serializable_serialize_property;
+ iface->deserialize_property = serializable_deserialize_property;
+ iface->find_property = serializable_find_property;
+ iface->list_properties = serializable_list_properties;
+ iface->set_property = serializable_set_property;
+ iface->get_property = serializable_get_property;
}
/**
@@ -371,10 +394,10 @@ gfbgraph_photo_serializable_get_property (JsonSerializable *serializable, GParam
*
* Returns: (transfer full): a new #GFBGraphPhoto; unref with g_object_unref()
**/
-GFBGraphPhoto*
+GFBGraphPhoto *
gfbgraph_photo_new (void)
{
- return GFBGRAPH_PHOTO(g_object_new(GFBGRAPH_TYPE_PHOTO, NULL));
+ return GFBGRAPH_PHOTO(g_object_new(GFBGRAPH_TYPE_PHOTO, NULL));
}
/**
@@ -387,10 +410,15 @@ gfbgraph_photo_new (void)
*
* Returns: (transfer full): a new #GFBGraphPhoto; unref with g_object_unref()
**/
-GFBGraphPhoto*
-gfbgraph_photo_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GError **error)
+GFBGraphPhoto *
+gfbgraph_photo_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GError **error)
{
- return GFBGRAPH_PHOTO (gfbgraph_node_new_from_id (authorizer, id, GFBGRAPH_TYPE_PHOTO, error));
+ return GFBGRAPH_PHOTO (gfbgraph_node_new_from_id (authorizer,
+ id,
+ GFBGRAPH_TYPE_PHOTO,
+ error));
}
@@ -405,41 +433,45 @@ gfbgraph_photo_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GEr
*
* Returns: (transfer full): a #GInputStream with the photo content or %NULL in case of error.
**/
-GInputStream*
-gfbgraph_photo_download_default_size (GFBGraphPhoto *photo, GFBGraphAuthorizer *authorizer, GError **error)
+GInputStream *
+gfbgraph_photo_download_default_size (GFBGraphPhoto *photo,
+ GFBGraphAuthorizer *authorizer,
+ GError **error)
{
- GInputStream *stream = NULL;
- SoupSession *session;
- SoupRequester *requester;
- SoupRequest *request;
- SoupMessage *message;
- GFBGraphPhotoPrivate *priv;
+ GInputStream *stream = NULL;
+ SoupSession *session;
+ SoupRequester *requester;
+ SoupRequest *request;
+ SoupMessage *message;
+ GFBGraphPhotoPrivate *priv;
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
- priv = GFBGRAPH_PHOTO_GET_PRIVATE (photo);
+ priv = GFBGRAPH_PHOTO_GET_PRIVATE (photo);
- session = soup_session_sync_new ();
- requester = soup_requester_new ();
- soup_session_add_feature (session, SOUP_SESSION_FEATURE (requester));
+ session = soup_session_sync_new ();
+ requester = soup_requester_new ();
+ soup_session_add_feature (session, SOUP_SESSION_FEATURE (requester));
- request = soup_requester_request (requester, priv->source, error);
- if (request != NULL) {
- message = soup_request_http_get_message (SOUP_REQUEST_HTTP (request));
+ request = soup_requester_request (requester, priv->source, error);
+ if (request != NULL) {
+ message = soup_request_http_get_message (SOUP_REQUEST_HTTP (request));
- stream = soup_request_send (request, NULL, error);
- if (stream != NULL) {
- g_object_weak_ref (G_OBJECT (stream), (GWeakNotify) g_object_unref, session);
- }
+ stream = soup_request_send (request, NULL, error);
+ if (stream != NULL) {
+ g_object_weak_ref (G_OBJECT (stream),
+ (GWeakNotify)g_object_unref,
+ session);
+ }
- g_clear_object (&message);
- g_clear_object (&request);
- }
+ g_clear_object (&message);
+ g_clear_object (&request);
+ }
- g_clear_object (&requester);
+ g_clear_object (&requester);
- return stream;
+ return stream;
}
/**
@@ -448,12 +480,12 @@ gfbgraph_photo_download_default_size (GFBGraphPhoto *photo, GFBGraphAuthorizer *
*
* Returns: (transfer none): the @photo name, which is the comment given by the user so it would by larger, or %NULL.
**/
-const gchar*
+const gchar *
gfbgraph_photo_get_name (GFBGraphPhoto *photo)
{
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
- return photo->priv->name;
+ return photo->priv->name;
}
/**
@@ -462,12 +494,12 @@ gfbgraph_photo_get_name (GFBGraphPhoto *photo)
*
* Returns: (transfer none): the image link with a maximun widht or height of 720px
**/
-const gchar*
+const gchar *
gfbgraph_photo_get_default_source_uri (GFBGraphPhoto *photo)
{
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
- return photo->priv->source;
+ return photo->priv->source;
}
/**
@@ -479,9 +511,9 @@ gfbgraph_photo_get_default_source_uri (GFBGraphPhoto *photo)
guint
gfbgraph_photo_get_default_width (GFBGraphPhoto *photo)
{
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), 0);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), 0);
- return photo->priv->width;
+ return photo->priv->width;
}
/**
@@ -493,9 +525,9 @@ gfbgraph_photo_get_default_width (GFBGraphPhoto *photo)
guint
gfbgraph_photo_get_default_height (GFBGraphPhoto *photo)
{
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), 0);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), 0);
- return photo->priv->height;
+ return photo->priv->height;
}
/**
@@ -504,12 +536,12 @@ gfbgraph_photo_get_default_height (GFBGraphPhoto *photo)
*
* Returns: (element-type GFBGraphPhotoImage) (transfer none): a #GList of #GFBGraphPhotoImage with the available photo sizes
**/
-GList*
+GList *
gfbgraph_photo_get_images (GFBGraphPhoto *photo)
{
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
- return photo->priv->images;
+ return photo->priv->images;
}
/**
@@ -518,86 +550,83 @@ gfbgraph_photo_get_images (GFBGraphPhoto *photo)
*
* Returns: (transfer none): a #GFBGraphPhotoImage with the higher resolution available of the photo
**/
-const GFBGraphPhotoImage*
+const GFBGraphPhotoImage *
gfbgraph_photo_get_image_hires (GFBGraphPhoto *photo)
{
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
-
- if (photo->priv->hires_image == NULL) {
- GList *images_list;
- guint bigger_width;
- GFBGraphPhotoImage *photo_image;
-
- bigger_width = 0;
- images_list = photo->priv->images;
- while (images_list) {
- photo_image = (GFBGraphPhotoImage *) images_list->data;
- if (photo_image->width > bigger_width) {
- photo->priv->hires_image = photo_image;
- bigger_width = photo_image->width;
- }
-
- images_list = g_list_next (images_list);
- }
- }
-
- return photo->priv->hires_image;
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
+
+ if (photo->priv->hires_image == NULL) {
+ GList *images_list;
+ guint bigger_width;
+ GFBGraphPhotoImage *photo_image;
+
+ bigger_width = 0;
+ images_list = photo->priv->images;
+ while (images_list) {
+ photo_image = (GFBGraphPhotoImage *) images_list->data;
+ if (photo_image->width > bigger_width) {
+ photo->priv->hires_image = photo_image;
+ bigger_width = photo_image->width;
+ }
+
+ images_list = g_list_next (images_list);
+ }
+ }
+
+ return photo->priv->hires_image;
}
-const GFBGraphPhotoImage*
-gfbgraph_photo_get_image_near_width (GFBGraphPhoto *photo, guint width)
+const GFBGraphPhotoImage *
+gfbgraph_photo_get_image_near_width (GFBGraphPhoto *photo,
+ guint width)
{
- GList *images_list;
- GFBGraphPhotoImage *tmp_photo_image;
- GFBGraphPhotoImage *photo_image;
- gint tmp_w_dif, w_dif;
+ GList *images_list;
+ GFBGraphPhotoImage *tmp_photo_image;
+ GFBGraphPhotoImage *photo_image = NULL;
+ gint tmp_w_dif, w_dif;
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
- photo_image = NULL;
- images_list = photo->priv->images;
- while (images_list) {
- tmp_photo_image = (GFBGraphPhotoImage *) images_list->data;
- tmp_w_dif = tmp_photo_image->width - width;
- tmp_w_dif = (tmp_w_dif > 0) ? tmp_w_dif : (tmp_w_dif * -1);
+ images_list = photo->priv->images;
+ while (images_list) {
+ tmp_photo_image = (GFBGraphPhotoImage *) images_list->data;
+ tmp_w_dif = tmp_photo_image->width - width;
+ tmp_w_dif = (tmp_w_dif > 0) ? tmp_w_dif : (tmp_w_dif * -1);
- if (photo_image == NULL
- || tmp_w_dif < w_dif) {
- w_dif = tmp_w_dif;
- photo_image = tmp_photo_image;
- } else {
- }
+ if (photo_image == NULL || tmp_w_dif < w_dif) {
+ w_dif = tmp_w_dif;
+ photo_image = tmp_photo_image;
+ }
- images_list = g_list_next (images_list);
- }
+ images_list = g_list_next (images_list);
+ }
- return photo_image;
+ return photo_image;
}
-const GFBGraphPhotoImage*
-gfbgraph_photo_get_image_near_height (GFBGraphPhoto *photo, guint height)
+const GFBGraphPhotoImage *
+gfbgraph_photo_get_image_near_height (GFBGraphPhoto *photo,
+ guint height)
{
- GList *images_list;
- GFBGraphPhotoImage *tmp_photo_image;
- GFBGraphPhotoImage *photo_image;
- gint tmp_h_dif, h_dif;
+ GList *images_list;
+ GFBGraphPhotoImage *tmp_photo_image;
+ GFBGraphPhotoImage *photo_image = NULL;
+ gint tmp_h_dif, h_dif;
- g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_PHOTO (photo), NULL);
- photo_image = NULL;
- images_list = photo->priv->images;
- while (images_list) {
- tmp_photo_image = (GFBGraphPhotoImage *) images_list->data;
- tmp_h_dif = ABS(tmp_photo_image->height - height);
+ images_list = photo->priv->images;
+ while (images_list) {
+ tmp_photo_image = (GFBGraphPhotoImage *) images_list->data;
+ tmp_h_dif = ABS(tmp_photo_image->height - height);
- if (photo_image == NULL
- || tmp_h_dif < h_dif) {
- h_dif = tmp_h_dif;
- photo_image = tmp_photo_image;
- }
+ if (photo_image == NULL || tmp_h_dif < h_dif) {
+ h_dif = tmp_h_dif;
+ photo_image = tmp_photo_image;
+ }
- images_list = g_list_next (images_list);
- }
+ images_list = g_list_next (images_list);
+ }
- return photo_image;
+ return photo_image;
}
diff --git a/gfbgraph/gfbgraph-photo.h b/gfbgraph/gfbgraph-photo.h
index 15932e7..5b947d8 100644
--- a/gfbgraph/gfbgraph-photo.h
+++ b/gfbgraph/gfbgraph-photo.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -25,12 +26,17 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_PHOTO (gfbgraph_photo_get_type())
-#define GFBGRAPH_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_PHOTO,GFBGraphPhoto))
-#define GFBGRAPH_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_PHOTO,GFBGraphPhotoClass))
-#define GFBGRAPH_IS_PHOTO(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_PHOTO))
-#define GFBGRAPH_IS_PHOTO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_PHOTO))
-#define GFBGRAPH_PHOTO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_PHOTO,GFBGraphPhotoClass))
+#define GFBGRAPH_TYPE_PHOTO (gfbgraph_photo_get_type())
+#define GFBGRAPH_PHOTO(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_PHOTO,GFBGraphPhoto))
+#define GFBGRAPH_PHOTO_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_PHOTO,GFBGraphPhotoClass))
+#define GFBGRAPH_IS_PHOTO(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_PHOTO))
+#define GFBGRAPH_IS_PHOTO_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_PHOTO))
+#define GFBGRAPH_PHOTO_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_PHOTO,GFBGraphPhotoClass))
typedef struct _GFBGraphPhoto GFBGraphPhoto;
typedef struct _GFBGraphPhotoClass GFBGraphPhotoClass;
@@ -39,14 +45,14 @@ typedef struct _GFBGraphPhotoPrivate GFBGraphPhotoPrivate;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GFBGraphPhoto, g_object_unref)
struct _GFBGraphPhoto {
- GFBGraphNode parent;
+ GFBGraphNode parent;
- /*< private >*/
- GFBGraphPhotoPrivate *priv;
+ /*< private >*/
+ GFBGraphPhotoPrivate *priv;
};
struct _GFBGraphPhotoClass {
- GFBGraphNodeClass parent_class;
+ GFBGraphNodeClass parent_class;
};
typedef struct _GFBGraphPhotoImage GFBGraphPhotoImage;
@@ -57,15 +63,19 @@ typedef struct _GFBGraphPhotoImage GFBGraphPhotoImage;
* An struct with the information of a image.
*/
struct _GFBGraphPhotoImage {
- guint width;
- guint height;
- gchar *source;
+ guint width;
+ guint height;
+ gchar *source;
};
GType gfbgraph_photo_get_type (void) G_GNUC_CONST;
GFBGraphPhoto* gfbgraph_photo_new (void);
-GFBGraphPhoto* gfbgraph_photo_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GError **error);
-GInputStream* gfbgraph_photo_download_default_size (GFBGraphPhoto *photo, GFBGraphAuthorizer *authorizer, GError **error);
+GFBGraphPhoto* gfbgraph_photo_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GError **error);
+GInputStream* gfbgraph_photo_download_default_size (GFBGraphPhoto *photo,
+ GFBGraphAuthorizer *authorizer,
+ GError **error);
const gchar* gfbgraph_photo_get_name (GFBGraphPhoto *photo);
const gchar* gfbgraph_photo_get_default_source_uri (GFBGraphPhoto *photo);
@@ -73,8 +83,10 @@ guint gfbgraph_photo_get_default_width (GFBGraphPhoto *photo)
guint gfbgraph_photo_get_default_height (GFBGraphPhoto *photo);
GList* gfbgraph_photo_get_images (GFBGraphPhoto *photo);
const GFBGraphPhotoImage* gfbgraph_photo_get_image_hires (GFBGraphPhoto *photo);
-const GFBGraphPhotoImage* gfbgraph_photo_get_image_near_width (GFBGraphPhoto *photo, guint width);
-const GFBGraphPhotoImage* gfbgraph_photo_get_image_near_height (GFBGraphPhoto *photo, guint height);
+const GFBGraphPhotoImage* gfbgraph_photo_get_image_near_width (GFBGraphPhoto *photo,
+ guint width);
+const GFBGraphPhotoImage* gfbgraph_photo_get_image_near_height (GFBGraphPhoto *photo,
+ guint height);
G_END_DECLS
diff --git a/gfbgraph/gfbgraph-simple-authorizer.c b/gfbgraph/gfbgraph-simple-authorizer.c
index 6e503c4..31202b2 100644
--- a/gfbgraph/gfbgraph-simple-authorizer.c
+++ b/gfbgraph/gfbgraph-simple-authorizer.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -33,162 +34,155 @@
enum
{
- PROP_0,
-
- PROP_ACCESS_TOKEN
+ PROP_0,
+ PROP_ACCESS_TOKEN
};
struct _GFBGraphSimpleAuthorizerPrivate {
- GMutex mutex;
- gchar *access_token;
+ GMutex mutex;
+ gchar *access_token;
};
-static void gfbgraph_simple_authorizer_init (GFBGraphSimpleAuthorizer *obj);
-static void gfbgraph_simple_authorizer_class_init (GFBGraphSimpleAuthorizerClass *klass);
-static void gfbgraph_simple_authorizer_finalize (GObject *obj);
-static void gfbgraph_simple_authorizer_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gfbgraph_simple_authorizer_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-static void gfbgraph_simple_authorizer_iface_init (GFBGraphAuthorizerInterface *iface);
-
-void gfbgraph_simple_authorizer_process_call (GFBGraphAuthorizer *iface, RestProxyCall *call);
-void gfbgraph_simple_authorizer_process_message (GFBGraphAuthorizer *iface, SoupMessage *message);
-gboolean gfbgraph_simple_authorizer_refresh_authorization (GFBGraphAuthorizer *iface, GCancellable *cancellable, GError **error);
-
-#define GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_SIMPLE_AUTHORIZER, GFBGraphSimpleAuthorizerPrivate))
+#define GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_SIMPLE_AUTHORIZER, GFBGraphSimpleAuthorizerPrivate))
static GObjectClass *parent_class = NULL;
-G_DEFINE_TYPE_WITH_CODE (GFBGraphSimpleAuthorizer, gfbgraph_simple_authorizer, G_TYPE_OBJECT,
- G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_AUTHORIZER, gfbgraph_simple_authorizer_iface_init));
+static void authorizer_iface_init (GFBGraphAuthorizerInterface *iface);
+G_DEFINE_TYPE_WITH_CODE (GFBGraphSimpleAuthorizer, gfbgraph_simple_authorizer, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GFBGRAPH_TYPE_AUTHORIZER, authorizer_iface_init));
static void
-gfbgraph_simple_authorizer_init (GFBGraphSimpleAuthorizer *obj)
+gfbgraph_simple_authorizer_finalize (GObject *obj)
{
- obj->priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE(obj);
- g_mutex_init (&obj->priv->mutex);
-}
+ GFBGraphSimpleAuthorizerPrivate *priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (obj);
-static void
-gfbgraph_simple_authorizer_class_init (GFBGraphSimpleAuthorizerClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
- gobject_class->finalize = gfbgraph_simple_authorizer_finalize;
- gobject_class->set_property = gfbgraph_simple_authorizer_set_property;
- gobject_class->get_property = gfbgraph_simple_authorizer_get_property;
-
- g_type_class_add_private (gobject_class, sizeof(GFBGraphSimpleAuthorizerPrivate));
-
- /**
- * GFBGraphSimpleAuthorizer:access_token:
- *
- * The access token for the Facebook Graph API, normally, take it by hand in the
- * Graph API explorer tool: https://developers.facebook.com/tools/explorer.
- **/
- g_object_class_install_property (gobject_class,
- PROP_ACCESS_TOKEN,
- g_param_spec_string ("access-token",
- "The access token", "The access token for the Facebook Graph API.",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_free (priv->access_token);
+ g_mutex_clear (&priv->mutex);
+
+ G_OBJECT_CLASS(parent_class)->finalize (obj);
}
static void
-gfbgraph_simple_authorizer_finalize (GObject *obj)
+gfbgraph_simple_authorizer_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- GFBGraphSimpleAuthorizerPrivate *priv;
-
- priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (obj);
+ GFBGraphSimpleAuthorizerPrivate *priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (object);
+ switch (prop_id) {
+ case PROP_ACCESS_TOKEN:
+ if (priv->access_token)
g_free (priv->access_token);
- g_mutex_clear (&priv->mutex);
-
- G_OBJECT_CLASS(parent_class)->finalize (obj);
+ priv->access_token = g_strdup (g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_simple_authorizer_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gfbgraph_simple_authorizer_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
- GFBGraphSimpleAuthorizerPrivate *priv;
-
- priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_ACCESS_TOKEN:
- if (priv->access_token)
- g_free (priv->access_token);
- priv->access_token = g_strdup (g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GFBGraphSimpleAuthorizerPrivate *priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_ACCESS_TOKEN:
+ g_value_set_string (value, priv->access_token);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_simple_authorizer_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gfbgraph_simple_authorizer_init (GFBGraphSimpleAuthorizer *obj)
{
- GFBGraphSimpleAuthorizerPrivate *priv;
-
- priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_ACCESS_TOKEN:
- g_value_set_string (value, priv->access_token);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ obj->priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE(obj);
+ g_mutex_init (&obj->priv->mutex);
}
static void
-gfbgraph_simple_authorizer_iface_init (GFBGraphAuthorizerInterface *iface)
+gfbgraph_simple_authorizer_class_init (GFBGraphSimpleAuthorizerClass *klass)
{
- iface->process_call = gfbgraph_simple_authorizer_process_call;
- iface->process_message = gfbgraph_simple_authorizer_process_message;
- iface->refresh_authorization = gfbgraph_simple_authorizer_refresh_authorization;
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ parent_class = g_type_class_peek_parent (klass);
+ gobject_class->finalize = gfbgraph_simple_authorizer_finalize;
+ gobject_class->set_property = gfbgraph_simple_authorizer_set_property;
+ gobject_class->get_property = gfbgraph_simple_authorizer_get_property;
+
+ g_type_class_add_private (gobject_class, sizeof(GFBGraphSimpleAuthorizerPrivate));
+
+ /**
+ * GFBGraphSimpleAuthorizer:access_token:
+ *
+ * The access token for the Facebook Graph API, normally, take it by hand in the
+ * Graph API explorer tool: https://developers.facebook.com/tools/explorer.
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_ACCESS_TOKEN,
+ g_param_spec_string ("access-token",
+ "The access token",
+ "The access token for the Facebook Graph API.",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
}
-void
-gfbgraph_simple_authorizer_process_call (GFBGraphAuthorizer *iface, RestProxyCall *call)
+/* --- Authorizer Interface --- */
+static void
+process_call (GFBGraphAuthorizer *iface,
+ RestProxyCall *call)
{
- GFBGraphSimpleAuthorizerPrivate *priv;
-
- priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (GFBGRAPH_SIMPLE_AUTHORIZER (iface));
+ GFBGraphSimpleAuthorizerPrivate *priv;
+ priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (GFBGRAPH_SIMPLE_AUTHORIZER (iface));
- g_mutex_lock (&priv->mutex);
- rest_proxy_call_add_param (call, "access_token", priv->access_token);
- g_mutex_unlock (&priv->mutex);
+ g_mutex_lock (&priv->mutex);
+ rest_proxy_call_add_param (call, "access_token", priv->access_token);
+ g_mutex_unlock (&priv->mutex);
}
-void
-gfbgraph_simple_authorizer_process_message (GFBGraphAuthorizer *iface, SoupMessage *message)
+static void
+process_message (GFBGraphAuthorizer *iface,
+ SoupMessage *message)
{
- gchar *auth_value;
- SoupURI *uri;
- GFBGraphSimpleAuthorizerPrivate *priv;
+ gchar *auth_value;
+ SoupURI *uri;
+ GFBGraphSimpleAuthorizerPrivate *priv;
+ priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (GFBGRAPH_SIMPLE_AUTHORIZER (iface));
- priv = GFBGRAPH_SIMPLE_AUTHORIZER_GET_PRIVATE (GFBGRAPH_SIMPLE_AUTHORIZER (iface));
+ g_mutex_lock (&priv->mutex);
- g_mutex_lock (&priv->mutex);
+ uri = soup_message_get_uri (message);
+ auth_value = g_strconcat ("access_token=", priv->access_token, NULL);
+ soup_uri_set_query (uri, auth_value);
- uri = soup_message_get_uri (message);
- auth_value = g_strconcat ("access_token=", priv->access_token, NULL);
- soup_uri_set_query (uri, auth_value);
+ g_free (auth_value);
- g_free (auth_value);
+ g_mutex_unlock (&priv->mutex);
+}
- g_mutex_unlock (&priv->mutex);
+static gboolean
+refresh_authorization (GFBGraphAuthorizer *iface,
+ GCancellable *cancellable,
+ GError **error)
+{
+ return FALSE;
}
-gboolean
-gfbgraph_simple_authorizer_refresh_authorization (GFBGraphAuthorizer *iface, GCancellable *cancellable, GError **error)
+static void
+authorizer_iface_init (GFBGraphAuthorizerInterface *iface)
{
- return FALSE;
+ iface->process_call = process_call;
+ iface->process_message = process_message;
+ iface->refresh_authorization = refresh_authorization;
}
/**
@@ -200,10 +194,12 @@ gfbgraph_simple_authorizer_refresh_authorization (GFBGraphAuthorizer *iface, GCa
*
* Returns: (transfer full): a #GFBGraphSimpleAuthorizer.
**/
-GFBGraphSimpleAuthorizer*
+GFBGraphSimpleAuthorizer *
gfbgraph_simple_authorizer_new (const gchar *access_token)
{
- g_return_val_if_fail (access_token != NULL, NULL);
+ g_return_val_if_fail (access_token != NULL, NULL);
- return GFBGRAPH_SIMPLE_AUTHORIZER (g_object_new (GFBGRAPH_TYPE_SIMPLE_AUTHORIZER, "access-token", access_token, NULL));
+ return GFBGRAPH_SIMPLE_AUTHORIZER (g_object_new (GFBGRAPH_TYPE_SIMPLE_AUTHORIZER,
+ "access-token", access_token,
+ NULL));
}
diff --git a/gfbgraph/gfbgraph-simple-authorizer.h b/gfbgraph/gfbgraph-simple-authorizer.h
index e2ceac3..56b9cad 100644
--- a/gfbgraph/gfbgraph-simple-authorizer.h
+++ b/gfbgraph/gfbgraph-simple-authorizer.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -24,26 +25,31 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_SIMPLE_AUTHORIZER (gfbgraph_simple_authorizer_get_type())
-#define GFBGRAPH_SIMPLE_AUTHORIZER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER,GFBGraphSimpleAuthorizer))
-#define GFBGRAPH_SIMPLE_AUTHORIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER,GFBGraphSimpleAuthorizerClass))
-#define GFBGRAPH_IS_SIMPLE_AUTHORIZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER))
-#define GFBGRAPH_IS_SIMPLE_AUTHORIZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER))
-#define GFBGRAPH_SIMPLE_AUTHORIZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER,GFBGraphSimpleAuthorizerClass))
+#define GFBGRAPH_TYPE_SIMPLE_AUTHORIZER (gfbgraph_simple_authorizer_get_type())
+#define GFBGRAPH_SIMPLE_AUTHORIZER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER,GFBGraphSimpleAuthorizer))
+#define GFBGRAPH_SIMPLE_AUTHORIZER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER,GFBGraphSimpleAuthorizerClass))
+#define GFBGRAPH_IS_SIMPLE_AUTHORIZER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER))
+#define GFBGRAPH_IS_SIMPLE_AUTHORIZER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER))
+#define GFBGRAPH_SIMPLE_AUTHORIZER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_SIMPLE_AUTHORIZER,GFBGraphSimpleAuthorizerClass))
typedef struct _GFBGraphSimpleAuthorizer GFBGraphSimpleAuthorizer;
typedef struct _GFBGraphSimpleAuthorizerClass GFBGraphSimpleAuthorizerClass;
typedef struct _GFBGraphSimpleAuthorizerPrivate GFBGraphSimpleAuthorizerPrivate;
struct _GFBGraphSimpleAuthorizer {
- GObject parent;
+ GObject parent;
- /*< private >*/
- GFBGraphSimpleAuthorizerPrivate *priv;
+ /*< private >*/
+ GFBGraphSimpleAuthorizerPrivate *priv;
};
struct _GFBGraphSimpleAuthorizerClass {
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
GType gfbgraph_simple_authorizer_get_type (void) G_GNUC_CONST;
diff --git a/gfbgraph/gfbgraph-user.c b/gfbgraph/gfbgraph-user.c
index 92b43b2..4a85f65 100644
--- a/gfbgraph/gfbgraph-user.c
+++ b/gfbgraph/gfbgraph-user.c
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013-2014 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -36,178 +37,177 @@
#define ME_FUNCTION "me"
enum {
- PROP_0,
-
- PROP_NAME,
- PROP_EMAIL
+ PROP_0,
+ PROP_NAME,
+ PROP_EMAIL
};
struct _GFBGraphUserPrivate {
- gchar *name;
- gchar *email;
+ gchar *name;
+ gchar *email;
};
typedef struct {
- GFBGraphUser *user;
+ GFBGraphUser *user;
} GFBGraphUserAsyncData;
typedef struct {
- GFBGraphAuthorizer *authorizer;
- GList *nodes;
+ GFBGraphAuthorizer *authorizer;
+ GList *nodes;
} GFBGraphUserConnectionAsyncData;
-static void gfbgraph_user_init (GFBGraphUser *object);
-static void gfbgraph_user_class_init (GFBGraphUserClass *klass);
-static void gfbgraph_user_finalize (GObject *object);
-static void gfbgraph_user_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
-static void gfbgraph_user_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
-
-/* Private functions */
-static void gfbgraph_user_async_data_free (GFBGraphUserAsyncData *data);
-static void gfbgraph_user_connection_async_data_free (GFBGraphUserConnectionAsyncData *data);
-static void gfbgraph_user_get_me_async_thread (GSimpleAsyncResult *simple_async, GFBGraphAuthorizer *authorizer, GCancellable cancellable);
-static void gfbgraph_user_get_albums_async_thread (GSimpleAsyncResult *simple_async, GFBGraphUser *user, GCancellable cancellable);
-
-#define GFBGRAPH_USER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_USER, GFBGraphUserPrivate))
+#define GFBGRAPH_USER_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_USER, GFBGraphUserPrivate))
static GFBGraphNodeClass *parent_class = NULL;
G_DEFINE_TYPE (GFBGraphUser, gfbgraph_user, GFBGRAPH_TYPE_NODE);
static void
-gfbgraph_user_init (GFBGraphUser *object)
+gfbgraph_user_finalize (GObject *object)
{
- object->priv = GFBGRAPH_USER_GET_PRIVATE (object);
-}
+ GFBGraphUserPrivate *priv = GFBGRAPH_USER_GET_PRIVATE (object);
-static void
-gfbgraph_user_class_init (GFBGraphUserClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
- gobject_class->finalize = gfbgraph_user_finalize;
- gobject_class->set_property = gfbgraph_user_set_property;
- gobject_class->get_property = gfbgraph_user_get_property;
-
- g_type_class_add_private (gobject_class, sizeof(GFBGraphUserPrivate));
-
- /**
- * GFBGraphUser:name:
- *
- * The full name of the user
- **/
- g_object_class_install_property (gobject_class,
- PROP_NAME,
- g_param_spec_string ("name",
- "User's full name", "The full name of the user",
- "",
- G_PARAM_READABLE | G_PARAM_WRITABLE));
-
- /**
- * GFBGraphUser:email:
- *
- * The email of the user if available
- **/
- g_object_class_install_property (gobject_class,
- PROP_EMAIL,
- g_param_spec_string ("email",
- "User's email", "The user primary email if available",
- NULL,
- G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_free (priv->name);
+ g_free (priv->email);
+
+ G_OBJECT_CLASS(parent_class)->finalize (object);
}
static void
-gfbgraph_user_finalize (GObject *object)
+gfbgraph_user_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
- GFBGraphUserPrivate *priv = GFBGRAPH_USER_GET_PRIVATE (object);
+ GFBGraphUserPrivate *priv = GFBGRAPH_USER_GET_PRIVATE (object);
+ switch (prop_id) {
+ case PROP_NAME:
+ if (priv->name)
g_free (priv->name);
+ priv->name = g_strdup (g_value_get_string (value));
+ break;
+ case PROP_EMAIL:
+ if (priv->email)
g_free (priv->email);
+ priv->email = g_strdup (g_value_get_string (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
- G_OBJECT_CLASS(parent_class)->finalize (object);
+static void
+gfbgraph_user_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ GFBGraphUserPrivate *priv = GFBGRAPH_USER_GET_PRIVATE (object);
+
+ switch (prop_id) {
+ case PROP_NAME:
+ g_value_set_string (value, priv->name);
+ break;
+ case PROP_EMAIL:
+ g_value_set_string (value, priv->email);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
-gfbgraph_user_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gfbgraph_user_init (GFBGraphUser *object)
{
- GFBGraphUserPrivate *priv = GFBGRAPH_USER_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_NAME:
- if (priv->name)
- g_free (priv->name);
- priv->name = g_strdup (g_value_get_string (value));
- break;
- case PROP_EMAIL:
- if (priv->email)
- g_free (priv->email);
- priv->email = g_strdup (g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ object->priv = GFBGRAPH_USER_GET_PRIVATE (object);
}
static void
-gfbgraph_user_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gfbgraph_user_class_init (GFBGraphUserClass *klass)
{
- GFBGraphUserPrivate *priv = GFBGRAPH_USER_GET_PRIVATE (object);
-
- switch (prop_id) {
- case PROP_NAME:
- g_value_set_string (value, priv->name);
- break;
- case PROP_EMAIL:
- g_value_set_string (value, priv->email);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ parent_class = g_type_class_peek_parent (klass);
+ gobject_class->finalize = gfbgraph_user_finalize;
+ gobject_class->set_property = gfbgraph_user_set_property;
+ gobject_class->get_property = gfbgraph_user_get_property;
+
+ g_type_class_add_private (gobject_class, sizeof(GFBGraphUserPrivate));
+
+ /**
+ * GFBGraphUser:name:
+ *
+ * The full name of the user
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_NAME,
+ g_param_spec_string ("name",
+ "User's full name",
+ "The full name of the user",
+ "",
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
+
+ /**
+ * GFBGraphUser:email:
+ *
+ * The email of the user if available
+ **/
+ g_object_class_install_property (gobject_class,
+ PROP_EMAIL,
+ g_param_spec_string ("email",
+ "User's email",
+ "The user primary email if available",
+ NULL,
+ G_PARAM_READABLE | G_PARAM_WRITABLE));
}
+/* --- Private Functions --- */
static void
-gfbgraph_user_async_data_free (GFBGraphUserAsyncData *data)
+async_data_free (GFBGraphUserAsyncData *data)
{
- g_object_unref (data->user);
+ g_object_unref (data->user);
- g_slice_free (GFBGraphUserAsyncData, data);
+ g_slice_free (GFBGraphUserAsyncData, data);
}
static void
-gfbgraph_user_connection_async_data_free (GFBGraphUserConnectionAsyncData *data)
+connection_async_data_free (GFBGraphUserConnectionAsyncData *data)
{
- g_object_unref (data->authorizer);
+ g_object_unref (data->authorizer);
- g_slice_free (GFBGraphUserConnectionAsyncData, data);
+ g_slice_free (GFBGraphUserConnectionAsyncData, data);
}
static void
-gfbgraph_user_get_me_async_thread (GSimpleAsyncResult *simple_async, GFBGraphAuthorizer *authorizer, GCancellable cancellable)
+get_me_async_thread (GSimpleAsyncResult *simple_async,
+ GFBGraphAuthorizer *authorizer,
+ GCancellable cancellable)
{
- GFBGraphUserAsyncData *data;
- GError *error = NULL;
+ GFBGraphUserAsyncData *data;
+ GError *error = NULL;
- data = (GFBGraphUserAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
-
- data->user = gfbgraph_user_get_me (authorizer, &error);
- if (error != NULL)
- g_simple_async_result_take_error (simple_async, error);
+ data = (GFBGraphUserAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
+ data->user = gfbgraph_user_get_me (authorizer, &error);
+ if (error != NULL)
+ g_simple_async_result_take_error (simple_async, error);
}
static void
-gfbgraph_user_get_albums_async_thread (GSimpleAsyncResult *simple_async, GFBGraphUser *user, GCancellable cancellable)
+get_albums_async_thread (GSimpleAsyncResult *simple_async,
+ GFBGraphUser *user,
+ GCancellable cancellable)
{
- GFBGraphUserConnectionAsyncData *data;
- GError *error = NULL;
-
- data = (GFBGraphUserConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
+ GFBGraphUserConnectionAsyncData *data;
+ GError *error = NULL;
- data->nodes = gfbgraph_user_get_albums (user, data->authorizer, &error);
- if (error != NULL)
- g_simple_async_result_take_error (simple_async, error);
+ data = (GFBGraphUserConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
+ data->nodes = gfbgraph_user_get_albums (user, data->authorizer, &error);
+ if (error != NULL)
+ g_simple_async_result_take_error (simple_async, error);
}
/**
@@ -217,10 +217,10 @@ gfbgraph_user_get_albums_async_thread (GSimpleAsyncResult *simple_async, GFBGrap
*
* Returns: a new #GFBGraphUser; unref with g_object_unref()
**/
-GFBGraphUser*
+GFBGraphUser *
gfbgraph_user_new (void)
{
- return GFBGRAPH_USER (g_object_new (GFBGRAPH_TYPE_USER, NULL));
+ return GFBGRAPH_USER (g_object_new (GFBGRAPH_TYPE_USER, NULL));
}
/**
@@ -233,10 +233,15 @@ gfbgraph_user_new (void)
*
* Returns: (transfer full): a new #GFBGraphUser; unref with g_object_unref()
**/
-GFBGraphUser*
-gfbgraph_user_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GError **error)
+GFBGraphUser *
+gfbgraph_user_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GError **error)
{
- return GFBGRAPH_USER (gfbgraph_node_new_from_id (authorizer, id, GFBGRAPH_TYPE_USER, error));
+ return GFBGRAPH_USER (gfbgraph_node_new_from_id (authorizer,
+ id,
+ GFBGRAPH_TYPE_USER,
+ error));
}
/**
@@ -249,38 +254,39 @@ gfbgraph_user_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GErr
*
* Returns: (transfer full): a #GFBGraphUser with the current user information.
**/
-GFBGraphUser*
-gfbgraph_user_get_me (GFBGraphAuthorizer *authorizer, GError **error)
+GFBGraphUser *
+gfbgraph_user_get_me (GFBGraphAuthorizer *authorizer,
+ GError **error)
{
- GFBGraphUser *me = NULL;
- RestProxyCall *rest_call;
- const gchar *payload;
- gboolean result;
-
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
-
- rest_call = gfbgraph_new_rest_call (authorizer);
- rest_proxy_call_set_function (rest_call, ME_FUNCTION);
- rest_proxy_call_set_method (rest_call, "GET");
- rest_proxy_call_add_param (rest_call, "fields", "name,email");
-
- result = rest_proxy_call_sync (rest_call, error);
- if (result) {
- JsonParser *parser;
- JsonNode *node;
-
- payload = rest_proxy_call_get_payload (rest_call);
- parser = json_parser_new ();
- if (json_parser_load_from_data (parser, payload, -1, error)) {
- node = json_parser_get_root (parser);
- me = GFBGRAPH_USER (json_gobject_deserialize (GFBGRAPH_TYPE_USER, node));
- }
-
- g_object_unref (parser);
- }
- g_object_unref (rest_call);
-
- return me;
+ GFBGraphUser *me = NULL;
+ RestProxyCall *rest_call;
+ const gchar *payload;
+ gboolean result;
+
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
+
+ rest_call = gfbgraph_new_rest_call (authorizer);
+ rest_proxy_call_set_function (rest_call, ME_FUNCTION);
+ rest_proxy_call_set_method (rest_call, "GET");
+ rest_proxy_call_add_param (rest_call, "fields", "name,email");
+
+ result = rest_proxy_call_sync (rest_call, error);
+ if (result) {
+ JsonParser *parser;
+ JsonNode *node;
+
+ payload = rest_proxy_call_get_payload (rest_call);
+ parser = json_parser_new ();
+ if (json_parser_load_from_data (parser, payload, -1, error)) {
+ node = json_parser_get_root (parser);
+ me = GFBGRAPH_USER (json_gobject_deserialize (GFBGRAPH_TYPE_USER, node));
+ }
+
+ g_object_unref (parser);
+ }
+ g_object_unref (rest_call);
+
+ return me;
}
/**
@@ -297,25 +303,36 @@ gfbgraph_user_get_me (GFBGraphAuthorizer *authorizer, GError **error)
* to get the #GFBGraphUser for to the current user logged.
**/
void
-gfbgraph_user_get_me_async (GFBGraphAuthorizer *authorizer, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+gfbgraph_user_get_me_async (GFBGraphAuthorizer *authorizer,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- GSimpleAsyncResult *simple_async;
- GFBGraphUserAsyncData *data;
-
- g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer));
- g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
- g_return_if_fail (callback != NULL);
-
- simple_async = g_simple_async_result_new (G_OBJECT (authorizer), callback, user_data, gfbgraph_user_get_me_async);
- g_simple_async_result_set_check_cancellable (simple_async, cancellable);
-
- data = g_slice_new (GFBGraphUserAsyncData);
- data->user = NULL;
-
- g_simple_async_result_set_op_res_gpointer (simple_async, data, (GDestroyNotify) gfbgraph_user_async_data_free);
- g_simple_async_result_run_in_thread (simple_async, (GSimpleAsyncThreadFunc) gfbgraph_user_get_me_async_thread, G_PRIORITY_DEFAULT, cancellable);
-
- g_object_unref (simple_async);
+ GSimpleAsyncResult *simple_async;
+ GFBGraphUserAsyncData *data;
+
+ g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer));
+ g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+ g_return_if_fail (callback != NULL);
+
+ simple_async = g_simple_async_result_new (G_OBJECT (authorizer),
+ callback,
+ user_data,
+ gfbgraph_user_get_me_async);
+ g_simple_async_result_set_check_cancellable (simple_async, cancellable);
+
+ data = g_slice_new (GFBGraphUserAsyncData);
+ data->user = NULL;
+
+ g_simple_async_result_set_op_res_gpointer (simple_async,
+ data,
+ (GDestroyNotify)async_data_free);
+ g_simple_async_result_run_in_thread (simple_async,
+ (GSimpleAsyncThreadFunc)get_me_async_thread,
+ G_PRIORITY_DEFAULT,
+ cancellable);
+
+ g_object_unref (simple_async);
}
/**
@@ -329,22 +346,27 @@ gfbgraph_user_get_me_async (GFBGraphAuthorizer *authorizer, GCancellable *cancel
*
* Returns: (transfer full): a #GFBGraphUser for to the current user logged.
**/
-GFBGraphUser*
-gfbgraph_user_get_me_async_finish (GFBGraphAuthorizer *authorizer, GAsyncResult *result, GError **error)
+GFBGraphUser *
+gfbgraph_user_get_me_async_finish (GFBGraphAuthorizer *authorizer,
+ GAsyncResult *result,
+ GError **error)
{
- GSimpleAsyncResult *simple_async;
- GFBGraphUserAsyncData *data;
+ GSimpleAsyncResult *simple_async;
+ GFBGraphUserAsyncData *data;
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (authorizer), gfbgraph_user_get_me_async), NULL);
- g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (g_simple_async_result_is_valid (result,
+ G_OBJECT (authorizer),
+ gfbgraph_user_get_me_async),
+ NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
- simple_async = G_SIMPLE_ASYNC_RESULT (result);
+ simple_async = G_SIMPLE_ASYNC_RESULT (result);
- if (g_simple_async_result_propagate_error (simple_async, error))
- return NULL;
+ if (g_simple_async_result_propagate_error (simple_async, error))
+ return NULL;
- data = (GFBGraphUserAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
- return data->user;
+ data = (GFBGraphUserAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
+ return data->user;
}
/**
@@ -357,13 +379,18 @@ gfbgraph_user_get_me_async_finish (GFBGraphAuthorizer *authorizer, GAsyncResult
*
* Returns: (element-type GFBGraphAlbum) (transfer full): a newly-allocated #GList with the albums nodes owned by the given user.
**/
-GList*
-gfbgraph_user_get_albums (GFBGraphUser *user, GFBGraphAuthorizer *authorizer, GError **error)
+GList *
+gfbgraph_user_get_albums (GFBGraphUser *user,
+ GFBGraphAuthorizer *authorizer,
+ GError **error)
{
- g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
- g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
- return gfbgraph_node_get_connection_nodes (GFBGRAPH_NODE (user), GFBGRAPH_TYPE_ALBUM, authorizer, error);
+ return gfbgraph_node_get_connection_nodes (GFBGRAPH_NODE (user),
+ GFBGRAPH_TYPE_ALBUM,
+ authorizer,
+ error);
}
/**
@@ -381,28 +408,41 @@ gfbgraph_user_get_albums (GFBGraphUser *user, GFBGraphAuthorizer *authorizer, GE
* to get the #GList of #GFBGraphAlbum owned by the @user.
**/
void
-gfbgraph_user_get_albums_async (GFBGraphUser *user, GFBGraphAuthorizer *authorizer, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+gfbgraph_user_get_albums_async (GFBGraphUser *user,
+ GFBGraphAuthorizer *authorizer,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- GSimpleAsyncResult *simple_async;
- GFBGraphUserConnectionAsyncData *data;
-
- g_return_if_fail (GFBGRAPH_IS_USER (user));
- g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer));
- g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
- g_return_if_fail (callback != NULL);
-
- simple_async = g_simple_async_result_new (G_OBJECT (user), callback, user_data, gfbgraph_user_get_albums_async);
- g_simple_async_result_set_check_cancellable (simple_async, cancellable);
-
- data = g_slice_new (GFBGraphUserConnectionAsyncData);
- data->nodes = NULL;
- data->authorizer = authorizer;
- g_object_ref (data->authorizer);
-
- g_simple_async_result_set_op_res_gpointer (simple_async, data, (GDestroyNotify) gfbgraph_user_connection_async_data_free);
- g_simple_async_result_run_in_thread (simple_async, (GSimpleAsyncThreadFunc) gfbgraph_user_get_albums_async_thread, G_PRIORITY_DEFAULT, cancellable);
-
- g_object_unref (simple_async);
+ GSimpleAsyncResult *simple_async;
+ GFBGraphUserConnectionAsyncData *data;
+
+ g_return_if_fail (GFBGRAPH_IS_USER (user));
+ g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer));
+ g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+ g_return_if_fail (callback != NULL);
+
+ simple_async = g_simple_async_result_new (G_OBJECT (user),
+ callback,
+ user_data,
+ gfbgraph_user_get_albums_async);
+ g_simple_async_result_set_check_cancellable (simple_async,
+ cancellable);
+
+ data = g_slice_new (GFBGraphUserConnectionAsyncData);
+ data->nodes = NULL;
+ data->authorizer = authorizer;
+ g_object_ref (data->authorizer);
+
+ g_simple_async_result_set_op_res_gpointer (simple_async,
+ data,
+ (GDestroyNotify)connection_async_data_free);
+ g_simple_async_result_run_in_thread (simple_async,
+ (GSimpleAsyncThreadFunc)get_albums_async_thread,
+ G_PRIORITY_DEFAULT,
+ cancellable);
+
+ g_object_unref (simple_async);
}
/**
@@ -416,23 +456,27 @@ gfbgraph_user_get_albums_async (GFBGraphUser *user, GFBGraphAuthorizer *authoriz
*
* Returns: (element-type GFBGraphAlbum) (transfer full): a newly-allocated #GList of albums owned by the @user.
**/
-GList*
-gfbgraph_user_get_albums_async_finish (GFBGraphUser *user, GAsyncResult *result, GError **error)
+GList *
+gfbgraph_user_get_albums_async_finish (GFBGraphUser *user,
+ GAsyncResult *result,
+ GError **error)
{
- GSimpleAsyncResult *simple_async;
- GFBGraphUserConnectionAsyncData *data;
+ GSimpleAsyncResult *simple_async;
+ GFBGraphUserConnectionAsyncData *data;
- g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (user), gfbgraph_user_get_albums_async), NULL);
- g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
+ g_return_val_if_fail (g_simple_async_result_is_valid (result,
+ G_OBJECT (user),
+ gfbgraph_user_get_albums_async), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
- simple_async = G_SIMPLE_ASYNC_RESULT (result);
+ simple_async = G_SIMPLE_ASYNC_RESULT (result);
- if (g_simple_async_result_propagate_error (simple_async, error))
- return NULL;
+ if (g_simple_async_result_propagate_error (simple_async, error))
+ return NULL;
- data = (GFBGraphUserConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
- return data->nodes;
+ data = (GFBGraphUserConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
+ return data->nodes;
}
/**
@@ -443,12 +487,12 @@ gfbgraph_user_get_albums_async_finish (GFBGraphUser *user, GAsyncResult *result,
*
* Returns: (transfer none): a const #gchar with the user full name, or %NULL.
**/
-const gchar*
+const gchar *
gfbgraph_user_get_name (GFBGraphUser *user)
{
- g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
- return user->priv->name;
+ return user->priv->name;
}
/**
@@ -460,10 +504,10 @@ gfbgraph_user_get_name (GFBGraphUser *user)
*
* Returns: (transfer none): a const #gchar with the user email, or %NULL.
**/
-const gchar*
+const gchar *
gfbgraph_user_get_email (GFBGraphUser *user)
{
- g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
+ g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
- return user->priv->email;
+ return user->priv->email;
}
diff --git a/gfbgraph/gfbgraph-user.h b/gfbgraph/gfbgraph-user.h
index 312b1f0..5dd29d5 100644
--- a/gfbgraph/gfbgraph-user.h
+++ b/gfbgraph/gfbgraph-user.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013-2014 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -27,12 +28,17 @@
G_BEGIN_DECLS
-#define GFBGRAPH_TYPE_USER (gfbgraph_user_get_type())
-#define GFBGRAPH_USER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_USER,GFBGraphUser))
-#define GFBGRAPH_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_USER,GFBGraphUserClass))
-#define GFBGRAPH_IS_USER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_USER))
-#define GFBGRAPH_IS_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_USER))
-#define GFBGRAPH_USER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_USER,GFBGraphUserClass))
+#define GFBGRAPH_TYPE_USER (gfbgraph_user_get_type())
+#define GFBGRAPH_USER(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GFBGRAPH_TYPE_USER,GFBGraphUser))
+#define GFBGRAPH_USER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GFBGRAPH_TYPE_USER,GFBGraphUserClass))
+#define GFBGRAPH_IS_USER(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GFBGRAPH_TYPE_USER))
+#define GFBGRAPH_IS_USER_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GFBGRAPH_TYPE_USER))
+#define GFBGRAPH_USER_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj),GFBGRAPH_TYPE_USER,GFBGraphUserClass))
typedef struct _GFBGraphUser GFBGraphUser;
typedef struct _GFBGraphUserClass GFBGraphUserClass;
@@ -41,27 +47,42 @@ typedef struct _GFBGraphUserPrivate GFBGraphUserPrivate;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (GFBGraphUser, g_object_unref)
struct _GFBGraphUser {
- GFBGraphNode parent;
+ GFBGraphNode parent;
- /*< private >*/
- GFBGraphUserPrivate *priv;
+ /*< private >*/
+ GFBGraphUserPrivate *priv;
};
struct _GFBGraphUserClass {
- GFBGraphNodeClass parent_class;
+ GFBGraphNodeClass parent_class;
};
GType gfbgraph_user_get_type (void) G_GNUC_CONST;
GFBGraphUser* gfbgraph_user_new (void);
-GFBGraphUser* gfbgraph_user_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GError **error);
-
-GFBGraphUser* gfbgraph_user_get_me (GFBGraphAuthorizer *authorizer, GError **error);
-void gfbgraph_user_get_me_async (GFBGraphAuthorizer *authorizer, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
-GFBGraphUser* gfbgraph_user_get_me_async_finish (GFBGraphAuthorizer *authorizer, GAsyncResult *result, GError **error);
-
-GList* gfbgraph_user_get_albums (GFBGraphUser *user, GFBGraphAuthorizer *authorizer, GError **error);
-void gfbgraph_user_get_albums_async (GFBGraphUser *user, GFBGraphAuthorizer *authorizer, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
-GList* gfbgraph_user_get_albums_async_finish (GFBGraphUser *user, GAsyncResult *result, GError **error);
+GFBGraphUser* gfbgraph_user_new_from_id (GFBGraphAuthorizer *authorizer,
+ const gchar *id,
+ GError **error);
+
+GFBGraphUser* gfbgraph_user_get_me (GFBGraphAuthorizer *authorizer,
+ GError **error);
+void gfbgraph_user_get_me_async (GFBGraphAuthorizer *authorizer,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+GFBGraphUser* gfbgraph_user_get_me_async_finish (GFBGraphAuthorizer *authorizer,
+ GAsyncResult *result,
+ GError **error);
+GList* gfbgraph_user_get_albums (GFBGraphUser *user,
+ GFBGraphAuthorizer *authorizer,
+ GError **error);
+void gfbgraph_user_get_albums_async (GFBGraphUser *user,
+ GFBGraphAuthorizer *authorizer,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+GList* gfbgraph_user_get_albums_async_finish (GFBGraphUser *user,
+ GAsyncResult *result,
+ GError **error);
const gchar* gfbgraph_user_get_name (GFBGraphUser *user);
const gchar* gfbgraph_user_get_email (GFBGraphUser *user);
diff --git a/gfbgraph/gfbgraph.h b/gfbgraph/gfbgraph.h
index a9f0034..a10fcf1 100644
--- a/gfbgraph/gfbgraph.h
+++ b/gfbgraph/gfbgraph.h
@@ -1,7 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013 Álvaro Peña <alvaropg@gmail.com>
+ * 2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/tests/autoptr.c b/tests/autoptr.c
index 182fc28..b3c37ba 100644
--- a/tests/autoptr.c
+++ b/tests/autoptr.c
@@ -1,7 +1,7 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
- * Copyright (C) 2018 Yi-Soo An <yisooan@gmail.com>
+ * Copyright (C) 2018-2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -28,49 +28,49 @@
static void
test_gfbgraph_album (void)
{
- g_autoptr (GFBGraphAlbum) val = NULL;
+ g_autoptr (GFBGraphAlbum) val = NULL;
- val = gfbgraph_album_new ();
- g_assert_nonnull (val);
+ val = gfbgraph_album_new ();
+ g_assert_nonnull (val);
}
static void
test_gfbgraph_node (void)
{
- g_autoptr (GFBGraphNode) val = NULL;
+ g_autoptr (GFBGraphNode) val = NULL;
- val = gfbgraph_node_new ();
- g_assert_nonnull (val);
+ val = gfbgraph_node_new ();
+ g_assert_nonnull (val);
}
static void
test_gfbgraph_photo (void)
{
- g_autoptr (GFBGraphPhoto) val = NULL;
+ g_autoptr (GFBGraphPhoto) val = NULL;
- val = gfbgraph_photo_new ();
- g_assert_nonnull (val);
+ val = gfbgraph_photo_new ();
+ g_assert_nonnull (val);
}
static void
test_gfbgraph_user (void)
{
- g_autoptr (GFBGraphUser) val = NULL;
+ g_autoptr (GFBGraphUser) val = NULL;
- val = gfbgraph_user_new ();
- g_assert_nonnull (val);
+ val = gfbgraph_user_new ();
+ g_assert_nonnull (val);
}
int
main (int argc,
- char *argv[])
+ char *argv[])
{
- g_test_init (&argc, &argv, NULL);
+ g_test_init (&argc, &argv, NULL);
- g_test_add_func ("/GFBGraph/autoptr/Album", test_gfbgraph_album);
- g_test_add_func ("/GFBGraph/autoptr/Node", test_gfbgraph_node);
- g_test_add_func ("/GFBGraph/autoptr/Photo", test_gfbgraph_photo);
- g_test_add_func ("/GFBGraph/autoptr/User", test_gfbgraph_user);
+ g_test_add_func ("/GFBGraph/autoptr/Album", test_gfbgraph_album);
+ g_test_add_func ("/GFBGraph/autoptr/Node", test_gfbgraph_node);
+ g_test_add_func ("/GFBGraph/autoptr/Photo", test_gfbgraph_photo);
+ g_test_add_func ("/GFBGraph/autoptr/User", test_gfbgraph_user);
- return g_test_run ();
+ return g_test_run ();
}
diff --git a/tests/gtestutils.c b/tests/gtestutils.c
index eef4529..ec3b7bb 100644
--- a/tests/gtestutils.c
+++ b/tests/gtestutils.c
@@ -1,8 +1,8 @@
-/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
+/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */
/*
* libgfbgraph - GObject library for Facebook Graph API
* Copyright (C) 2013-2015 Álvaro Peña <alvaropg@gmail.com>
- * 2019 Leesoo Ahn <yisooan@fedoraproject.org>
+ * 2019-2020 Leesoo Ahn <yisooan@fedoraproject.org>
*
* GFBGraph is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -32,17 +32,17 @@ typedef struct _GFBGraphTestApp GFBGraphTestApp;
struct _GFBGraphTestFixture
{
- gchar *user_id;
- gchar *user_email;
+ gchar *user_id;
+ gchar *user_email;
- GFBGraphSimpleAuthorizer *authorizer;
+ GFBGraphSimpleAuthorizer *authorizer;
};
struct _GFBGraphTestApp
{
- gchar *client_id;
- gchar *client_secret;
- gchar *access_token;
+ gchar *client_id;
+ gchar *client_secret;
+ gchar *access_token;
};
#define FACEBOOK_ENDPOINT "https://graph.facebook.com/v2.10"
@@ -52,231 +52,231 @@ struct _GFBGraphTestApp
GFBGraphTestApp*
gfbgraph_test_app_setup (void)
{
- GFBGraphTestApp *app;
- RestProxy *proxy;
- RestProxyCall *rest_call;
- g_autofree gchar *function_path = NULL;
- g_autofree gchar *app_key_filename = NULL;
- g_autoptr(GError) error = NULL;
- g_autoptr(GKeyFile) app_key_file = NULL;
- g_autoptr(JsonParser) jparser = NULL;
- g_autoptr(JsonReader) jreader = NULL;
- JsonNode *jnode;
- const char *payload;
-
- app_key_filename = g_test_build_filename (G_TEST_BUILT,
- "credentials.ini",
- NULL);
- app_key_file = g_key_file_new ();
- g_key_file_load_from_file (app_key_file,
- app_key_filename,
- G_KEY_FILE_NONE,
- &error);
- g_assert_no_error(error);
-
- app = g_new0(GFBGraphTestApp, 1);
-
- app->client_id = g_key_file_get_string (app_key_file,
- "Client",
- "ClientId",
- &error);
- g_assert_no_error(error);
- app->client_secret = g_key_file_get_string (app_key_file,
- "Client",
- "ClientSecret",
- &error);
- g_assert_no_error(error);
-
- proxy = rest_proxy_new (FACEBOOK_ENDPOINT, FALSE);
- rest_call = rest_proxy_new_call (proxy);
-
- rest_proxy_call_add_param (rest_call, "client_id", app->client_id);
- rest_proxy_call_add_param (rest_call, "client_secret", app->client_secret);
- rest_proxy_call_add_param (rest_call, "grant_type", "client_credentials");
-
- rest_proxy_call_set_method (rest_call, "GET");
- function_path = g_strdup ("/oauth/access_token");
- rest_proxy_call_set_function (rest_call, function_path);
-
- rest_proxy_call_sync (rest_call, &error);
- g_assert_no_error (error);
-
- payload = rest_proxy_call_get_payload (rest_call);
- jparser = json_parser_new ();
- json_parser_load_from_data (jparser, payload, -1, &error);
- g_assert_no_error (error);
- jnode = json_parser_get_root (jparser);
- jreader = json_reader_new (jnode);
- json_reader_read_element (jreader, 0);
- app->access_token = g_strdup(json_reader_get_string_value (jreader));
- json_reader_end_element (jreader);
-
- g_clear_object(&rest_call);
- g_clear_object(&proxy);
-
- return app;
+ GFBGraphTestApp *app;
+ RestProxy *proxy;
+ RestProxyCall *rest_call;
+ g_autofree gchar *function_path = NULL;
+ g_autofree gchar *app_key_filename = NULL;
+ g_autoptr(GError) error = NULL;
+ g_autoptr(GKeyFile) app_key_file = NULL;
+ g_autoptr(JsonParser) jparser = NULL;
+ g_autoptr(JsonReader) jreader = NULL;
+ JsonNode *jnode;
+ const char *payload;
+
+ app_key_filename = g_test_build_filename (G_TEST_BUILT,
+ "credentials.ini",
+ NULL);
+ app_key_file = g_key_file_new ();
+ g_key_file_load_from_file (app_key_file,
+ app_key_filename,
+ G_KEY_FILE_NONE,
+ &error);
+ g_assert_no_error(error);
+
+ app = g_new0(GFBGraphTestApp, 1);
+
+ app->client_id = g_key_file_get_string (app_key_file,
+ "Client",
+ "ClientId",
+ &error);
+ g_assert_no_error(error);
+ app->client_secret = g_key_file_get_string (app_key_file,
+ "Client",
+ "ClientSecret",
+ &error);
+ g_assert_no_error(error);
+
+ proxy = rest_proxy_new (FACEBOOK_ENDPOINT, FALSE);
+ rest_call = rest_proxy_new_call (proxy);
+
+ rest_proxy_call_add_param (rest_call, "client_id", app->client_id);
+ rest_proxy_call_add_param (rest_call, "client_secret", app->client_secret);
+ rest_proxy_call_add_param (rest_call, "grant_type", "client_credentials");
+
+ rest_proxy_call_set_method (rest_call, "GET");
+ function_path = g_strdup ("/oauth/access_token");
+ rest_proxy_call_set_function (rest_call, function_path);
+
+ rest_proxy_call_sync (rest_call, &error);
+ g_assert_no_error (error);
+
+ payload = rest_proxy_call_get_payload (rest_call);
+ jparser = json_parser_new ();
+ json_parser_load_from_data (jparser, payload, -1, &error);
+ g_assert_no_error (error);
+ jnode = json_parser_get_root (jparser);
+ jreader = json_reader_new (jnode);
+ json_reader_read_element (jreader, 0);
+ app->access_token = g_strdup(json_reader_get_string_value (jreader));
+ json_reader_end_element (jreader);
+
+ g_clear_object(&rest_call);
+ g_clear_object(&proxy);
+
+ return app;
}
void
gfbgraph_test_fixture_setup (GFBGraphTestFixture *fixture, gconstpointer user_data)
{
- RestProxy *proxy;
- RestProxyCall *rest_call;
- g_autofree gchar *function_path = NULL;
- const gchar *payload;
- g_autoptr(GError) error = NULL;
- const GFBGraphTestApp *app = user_data;
- JsonNode *jnode;
- g_autoptr(JsonParser) jparser = NULL;
- g_autoptr(JsonReader) jreader = NULL;
- const gchar *access_token;
-
- /* Create a new user */
-
- proxy = rest_proxy_new (FACEBOOK_ENDPOINT, FALSE);
- rest_call = rest_proxy_new_call (proxy);
-
- /* Params as documented here: https://developers.facebook.com/docs/graph-api/reference/app/accounts/test-users#publish */
- rest_proxy_call_add_param (rest_call, "installed", "true");
- rest_proxy_call_add_param (rest_call, "permissions", FACEBOOK_TEST_USER_PERMISSIONS);
- rest_proxy_call_add_param (rest_call, "access_token", app->access_token);
-
- rest_proxy_call_set_method (rest_call, "POST");
- function_path = g_strdup_printf ("%s/accounts/test-users", app->client_id);
- rest_proxy_call_set_function (rest_call, function_path);
-
- rest_proxy_call_sync (rest_call, &error);
- g_assert_no_error (error);
-
- payload = rest_proxy_call_get_payload (rest_call);
- jparser = json_parser_new ();
- json_parser_load_from_data (jparser, payload, -1, &error);
- g_assert_no_error (error);
- jnode = json_parser_get_root (jparser);
- jreader = json_reader_new (jnode);
-
- json_reader_read_element (jreader, 0);
- fixture->user_id = g_strdup (json_reader_get_string_value (jreader));
- json_reader_end_element (jreader);
- json_reader_read_element (jreader, 1);
- access_token = json_reader_get_string_value (jreader);
- json_reader_end_element (jreader);
- json_reader_read_element (jreader, 3);
- fixture->user_email = g_strdup (json_reader_get_string_value (jreader));
- json_reader_end_element (jreader);
-
- fixture->authorizer = gfbgraph_simple_authorizer_new (access_token);
-
- g_clear_object (&rest_call);
- g_clear_object (&proxy);
+ RestProxy *proxy;
+ RestProxyCall *rest_call;
+ g_autofree gchar *function_path = NULL;
+ const gchar *payload;
+ g_autoptr(GError) error = NULL;
+ const GFBGraphTestApp *app = user_data;
+ JsonNode *jnode;
+ g_autoptr(JsonParser) jparser = NULL;
+ g_autoptr(JsonReader) jreader = NULL;
+ const gchar *access_token;
+
+ /* Create a new user */
+
+ proxy = rest_proxy_new (FACEBOOK_ENDPOINT, FALSE);
+ rest_call = rest_proxy_new_call (proxy);
+
+ /* Params as documented here: https://developers.facebook.com/docs/graph-api/reference/app/accounts/test-users#publish */
+ rest_proxy_call_add_param (rest_call, "installed", "true");
+ rest_proxy_call_add_param (rest_call, "permissions", FACEBOOK_TEST_USER_PERMISSIONS);
+ rest_proxy_call_add_param (rest_call, "access_token", app->access_token);
+
+ rest_proxy_call_set_method (rest_call, "POST");
+ function_path = g_strdup_printf ("%s/accounts/test-users", app->client_id);
+ rest_proxy_call_set_function (rest_call, function_path);
+
+ rest_proxy_call_sync (rest_call, &error);
+ g_assert_no_error (error);
+
+ payload = rest_proxy_call_get_payload (rest_call);
+ jparser = json_parser_new ();
+ json_parser_load_from_data (jparser, payload, -1, &error);
+ g_assert_no_error (error);
+ jnode = json_parser_get_root (jparser);
+ jreader = json_reader_new (jnode);
+
+ json_reader_read_element (jreader, 0);
+ fixture->user_id = g_strdup (json_reader_get_string_value (jreader));
+ json_reader_end_element (jreader);
+ json_reader_read_element (jreader, 1);
+ access_token = json_reader_get_string_value (jreader);
+ json_reader_end_element (jreader);
+ json_reader_read_element (jreader, 3);
+ fixture->user_email = g_strdup (json_reader_get_string_value (jreader));
+ json_reader_end_element (jreader);
+
+ fixture->authorizer = gfbgraph_simple_authorizer_new (access_token);
+
+ g_clear_object (&rest_call);
+ g_clear_object (&proxy);
}
static void
gfbgraph_test_fixture_teardown (GFBGraphTestFixture *fixture, G_GNUC_UNUSED gconstpointer user_data)
{
- g_autoptr(SoupSession) ssession = NULL;
- g_autoptr(SoupMessage) smessage = NULL;
- g_autofree gchar *function_path = NULL;
- guint status;
+ g_autoptr(SoupSession) ssession = NULL;
+ g_autoptr(SoupMessage) smessage = NULL;
+ g_autofree gchar *function_path = NULL;
+ guint status;
- /* Delete the test user and clean up memory */
+ /* Delete the test user and clean up memory */
- ssession = soup_session_new ();
+ ssession = soup_session_new ();
- function_path = g_strdup_printf ("%s/%s", FACEBOOK_ENDPOINT, fixture->user_id);
- smessage = soup_message_new ("DELETE", function_path);
- gfbgraph_authorizer_process_message (GFBGRAPH_AUTHORIZER (fixture->authorizer), smessage);
+ function_path = g_strdup_printf ("%s/%s", FACEBOOK_ENDPOINT, fixture->user_id);
+ smessage = soup_message_new ("DELETE", function_path);
+ gfbgraph_authorizer_process_message (GFBGRAPH_AUTHORIZER (fixture->authorizer), smessage);
- status = soup_session_send_message (ssession, smessage);
- g_assert_cmpint(status, ==, 200);
+ status = soup_session_send_message (ssession, smessage);
+ g_assert_cmpint(status, ==, 200);
- g_free (fixture->user_id);
- g_free (fixture->user_email);
- g_object_unref (fixture->authorizer);
+ g_free (fixture->user_id);
+ g_free (fixture->user_email);
+ g_object_unref (fixture->authorizer);
}
static void
gfbgraph_test_me (GFBGraphTestFixture *fixture, G_GNUC_UNUSED gconstpointer user_data)
{
- g_autoptr(GFBGraphUser) me = NULL;
- g_autoptr(GError) error = NULL;
+ g_autoptr(GFBGraphUser) me = NULL;
+ g_autoptr(GError) error = NULL;
- me = gfbgraph_user_get_me (GFBGRAPH_AUTHORIZER (fixture->authorizer), &error);
- g_assert_no_error (error);
- g_assert (GFBGRAPH_IS_USER (me));
+ me = gfbgraph_user_get_me (GFBGRAPH_AUTHORIZER (fixture->authorizer), &error);
+ g_assert_no_error (error);
+ g_assert (GFBGRAPH_IS_USER (me));
- g_assert_cmpstr (fixture->user_id, ==, gfbgraph_node_get_id (GFBGRAPH_NODE (me)));
- g_assert_cmpstr (fixture->user_email, ==, gfbgraph_user_get_email (me));
+ g_assert_cmpstr (fixture->user_id, ==, gfbgraph_node_get_id (GFBGRAPH_NODE (me)));
+ g_assert_cmpstr (fixture->user_email, ==, gfbgraph_user_get_email (me));
}
static G_GNUC_UNUSED void
gfbgraph_test_album (GFBGraphTestFixture *fixture, G_GNUC_UNUSED gconstpointer user_data)
{
- GFBGraphUser *me;
- GFBGraphAlbum *album;
- GError *error = NULL;
- gboolean result;
-
- me = gfbgraph_user_get_me (GFBGRAPH_AUTHORIZER (fixture->authorizer), &error);
- g_assert_no_error (error);
- g_assert (GFBGRAPH_IS_USER (me));
-
- /* Create a photo album */
- album = gfbgraph_album_new ();
- gfbgraph_album_set_name (album, "Vanilla Sky");
- gfbgraph_album_set_description (album, "Great sunset photos in Mars!");
- result = gfbgraph_node_append_connection (GFBGRAPH_NODE (me),
- GFBGRAPH_NODE (album),
- GFBGRAPH_AUTHORIZER (fixture->authorizer),
- &error);
- /* Asserting the connection */
- g_assert_no_error (error);
- g_assert (result);
-
- /* Asserting the Album ID */
- g_assert_cmpstr (gfbgraph_node_get_id (GFBGRAPH_NODE (album)), !=, "");
+ GFBGraphUser *me;
+ GFBGraphAlbum *album;
+ GError *error = NULL;
+ gboolean result;
+
+ me = gfbgraph_user_get_me (GFBGRAPH_AUTHORIZER (fixture->authorizer), &error);
+ g_assert_no_error (error);
+ g_assert (GFBGRAPH_IS_USER (me));
+
+ /* Create a photo album */
+ album = gfbgraph_album_new ();
+ gfbgraph_album_set_name (album, "Vanilla Sky");
+ gfbgraph_album_set_description (album, "Great sunset photos in Mars!");
+ result = gfbgraph_node_append_connection (GFBGRAPH_NODE (me),
+ GFBGRAPH_NODE (album),
+ GFBGRAPH_AUTHORIZER (fixture->authorizer),
+ &error);
+ /* Asserting the connection */
+ g_assert_no_error (error);
+ g_assert (result);
+
+ /* Asserting the Album ID */
+ g_assert_cmpstr (gfbgraph_node_get_id (GFBGRAPH_NODE (album)), !=, "");
}
int
main (int argc, char **argv)
{
- GFBGraphTestApp *app = NULL;
- int test_result;
+ GFBGraphTestApp *app = NULL;
+ int test_result;
- g_test_init (&argc, &argv, NULL);
+ g_test_init (&argc, &argv, NULL);
- g_log_set_always_fatal (G_LOG_LEVEL_ERROR | G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL | G_LOG_LEVEL_CRITICAL);
+ g_log_set_always_fatal (G_LOG_LEVEL_ERROR | G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL | G_LOG_LEVEL_CRITICAL);
- app = gfbgraph_test_app_setup ();
+ app = gfbgraph_test_app_setup ();
- g_test_add ("/GFBGraph/Me",
- GFBGraphTestFixture,
- app,
- gfbgraph_test_fixture_setup,
- gfbgraph_test_me,
- gfbgraph_test_fixture_teardown);
+ g_test_add ("/GFBGraph/Me",
+ GFBGraphTestFixture,
+ app,
+ gfbgraph_test_fixture_setup,
+ gfbgraph_test_me,
+ gfbgraph_test_fixture_teardown);
#if 0
- g_test_add ("/GFBGraph/Album",
- GFBGraphTestFixture,
- app,
- gfbgraph_test_fixture_setup,
- gfbgraph_test_album,
- gfbgraph_test_fixture_teardown);
+ g_test_add ("/GFBGraph/Album",
+ GFBGraphTestFixture,
+ app,
+ gfbgraph_test_fixture_setup,
+ gfbgraph_test_album,
+ gfbgraph_test_fixture_teardown);
#endif
- test_result = g_test_run ();
+ test_result = g_test_run ();
- if (app) {
- if (app->client_id)
- g_free (app->client_id);
- if (app->client_secret)
- g_free (app->client_secret);
- if (app->access_token)
- g_free (app->access_token);
- g_free (app);
- }
+ if (app) {
+ if (app->client_id)
+ g_free (app->client_id);
+ if (app->client_secret)
+ g_free (app->client_secret);
+ if (app->access_token)
+ g_free (app->access_token);
+ g_free (app);
+ }
- return test_result;
+ return test_result;
}