|
Packit |
87b8d1 |
/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 8; tab-width: 8 -*- */
|
|
Packit |
87b8d1 |
/*
|
|
Packit |
87b8d1 |
* libgfbgraph - GObject library for Facebook Graph API
|
|
Packit |
87b8d1 |
* Copyright (C) 2013-2014 Álvaro Peña <alvaropg@gmail.com>
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* GFBGraph is free software; you can redistribute it and/or
|
|
Packit |
87b8d1 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
87b8d1 |
* License as published by the Free Software Foundation; either
|
|
Packit |
87b8d1 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* GFBGraph is distributed in the hope that it will be useful,
|
|
Packit |
87b8d1 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
87b8d1 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
87b8d1 |
* Lesser General Public License for more details.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
87b8d1 |
* License along with GFBGraph. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
87b8d1 |
*/
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* SECTION:gfbgraph-user
|
|
Packit |
87b8d1 |
* @short_description: GFBGraph User node
|
|
Packit |
87b8d1 |
* @stability: Unstable
|
|
Packit |
87b8d1 |
* @include: gfbgraph/gfbgraph.h
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* #GFBGraphUser represents a <ulink url="https://developers.facebook.com/docs/reference/api/user/">user in Facebook</ulink>.
|
|
Packit |
87b8d1 |
* With the "me" functions, (see gfbgraph_user_get_me()) you can query for the logged user node.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
#include <json-glib/json-glib.h>
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
#include "gfbgraph-user.h"
|
|
Packit |
87b8d1 |
#include "gfbgraph-album.h"
|
|
Packit |
87b8d1 |
#include "gfbgraph-common.h"
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
#define ME_FUNCTION "me"
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
enum {
|
|
Packit |
87b8d1 |
PROP_0,
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
PROP_NAME,
|
|
Packit |
87b8d1 |
PROP_EMAIL
|
|
Packit |
87b8d1 |
};
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
struct _GFBGraphUserPrivate {
|
|
Packit |
87b8d1 |
gchar *name;
|
|
Packit |
87b8d1 |
gchar *email;
|
|
Packit |
87b8d1 |
};
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
typedef struct {
|
|
Packit |
87b8d1 |
GFBGraphUser *user;
|
|
Packit |
87b8d1 |
} GFBGraphUserAsyncData;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
typedef struct {
|
|
Packit |
87b8d1 |
GFBGraphAuthorizer *authorizer;
|
|
Packit |
87b8d1 |
GList *nodes;
|
|
Packit |
87b8d1 |
} GFBGraphUserConnectionAsyncData;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void gfbgraph_user_init (GFBGraphUser *obj);
|
|
Packit |
87b8d1 |
static void gfbgraph_user_class_init (GFBGraphUserClass *klass);
|
|
Packit |
87b8d1 |
static void gfbgraph_user_finalize (GObject *obj);
|
|
Packit |
87b8d1 |
static void gfbgraph_user_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
|
|
Packit |
87b8d1 |
static void gfbgraph_user_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/* Private functions */
|
|
Packit |
87b8d1 |
static void gfbgraph_user_async_data_free (GFBGraphUserAsyncData *data);
|
|
Packit |
87b8d1 |
static void gfbgraph_user_connection_async_data_free (GFBGraphUserConnectionAsyncData *data);
|
|
Packit |
87b8d1 |
static void gfbgraph_user_get_me_async_thread (GSimpleAsyncResult *simple_async, GFBGraphAuthorizer *authorizer, GCancellable cancellable);
|
|
Packit |
87b8d1 |
static void gfbgraph_user_get_albums_async_thread (GSimpleAsyncResult *simple_async, GFBGraphUser *user, GCancellable cancellable);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
#define GFBGRAPH_USER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), GFBGRAPH_TYPE_USER, GFBGraphUserPrivate))
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static GFBGraphNodeClass *parent_class = NULL;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
G_DEFINE_TYPE (GFBGraphUser, gfbgraph_user, GFBGRAPH_TYPE_NODE);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_init (GFBGraphUser *obj)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
obj->priv = GFBGRAPH_USER_GET_PRIVATE(obj);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_class_init (GFBGraphUserClass *klass)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
parent_class = g_type_class_peek_parent (klass);
|
|
Packit |
87b8d1 |
gobject_class->finalize = gfbgraph_user_finalize;
|
|
Packit |
87b8d1 |
gobject_class->set_property = gfbgraph_user_set_property;
|
|
Packit |
87b8d1 |
gobject_class->get_property = gfbgraph_user_get_property;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_type_class_add_private (gobject_class, sizeof(GFBGraphUserPrivate));
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* GFBGraphUser:name:
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* The full name of the user
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
g_object_class_install_property (gobject_class,
|
|
Packit |
87b8d1 |
PROP_NAME,
|
|
Packit |
87b8d1 |
g_param_spec_string ("name",
|
|
Packit |
87b8d1 |
"User's full name", "The full name of the user",
|
|
Packit |
87b8d1 |
"",
|
|
Packit |
87b8d1 |
G_PARAM_READABLE | G_PARAM_WRITABLE));
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* GFBGraphUser:email:
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* The email of the user if available
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
g_object_class_install_property (gobject_class,
|
|
Packit |
87b8d1 |
PROP_EMAIL,
|
|
Packit |
87b8d1 |
g_param_spec_string ("email",
|
|
Packit |
87b8d1 |
"User's email", "The user primary email if available",
|
|
Packit |
87b8d1 |
NULL,
|
|
Packit |
87b8d1 |
G_PARAM_READABLE | G_PARAM_WRITABLE));
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_finalize (GObject *obj)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
G_OBJECT_CLASS(parent_class)->finalize (obj);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GFBGraphUserPrivate *priv;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
priv = GFBGRAPH_USER_GET_PRIVATE (object);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
switch (prop_id) {
|
|
Packit |
87b8d1 |
case PROP_NAME:
|
|
Packit |
87b8d1 |
if (priv->name)
|
|
Packit |
87b8d1 |
g_free (priv->name);
|
|
Packit |
87b8d1 |
priv->name = g_strdup (g_value_get_string (value));
|
|
Packit |
87b8d1 |
break;
|
|
Packit |
87b8d1 |
case PROP_EMAIL:
|
|
Packit |
87b8d1 |
if (priv->email)
|
|
Packit |
87b8d1 |
g_free (priv->email);
|
|
Packit |
87b8d1 |
priv->email = g_strdup (g_value_get_string (value));
|
|
Packit |
87b8d1 |
break;
|
|
Packit |
87b8d1 |
default:
|
|
Packit |
87b8d1 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
Packit |
87b8d1 |
break;
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GFBGraphUserPrivate *priv;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
priv = GFBGRAPH_USER_GET_PRIVATE (object);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
switch (prop_id) {
|
|
Packit |
87b8d1 |
case PROP_NAME:
|
|
Packit |
87b8d1 |
g_value_set_string (value, priv->name);
|
|
Packit |
87b8d1 |
break;
|
|
Packit |
87b8d1 |
case PROP_EMAIL:
|
|
Packit |
87b8d1 |
g_value_set_string (value, priv->email);
|
|
Packit |
87b8d1 |
break;
|
|
Packit |
87b8d1 |
default:
|
|
Packit |
87b8d1 |
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
|
Packit |
87b8d1 |
break;
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_async_data_free (GFBGraphUserAsyncData *data)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
g_object_unref (data->user);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_slice_free (GFBGraphUserAsyncData, data);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_connection_async_data_free (GFBGraphUserConnectionAsyncData *data)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
g_object_unref (data->authorizer);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_slice_free (GFBGraphUserConnectionAsyncData, data);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_get_me_async_thread (GSimpleAsyncResult *simple_async, GFBGraphAuthorizer *authorizer, GCancellable cancellable)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GFBGraphUserAsyncData *data;
|
|
Packit |
87b8d1 |
GError *error;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
data = (GFBGraphUserAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
error = NULL;
|
|
Packit |
87b8d1 |
data->user = gfbgraph_user_get_me (authorizer, &error);
|
|
Packit |
87b8d1 |
if (error != NULL)
|
|
Packit |
87b8d1 |
g_simple_async_result_take_error (simple_async, error);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
static void
|
|
Packit |
87b8d1 |
gfbgraph_user_get_albums_async_thread (GSimpleAsyncResult *simple_async, GFBGraphUser *user, GCancellable cancellable)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GFBGraphUserConnectionAsyncData *data;
|
|
Packit |
87b8d1 |
GError *error;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
data = (GFBGraphUserConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
error = NULL;
|
|
Packit |
87b8d1 |
data->nodes = gfbgraph_user_get_albums (user, data->authorizer, &error);
|
|
Packit |
87b8d1 |
if (error != NULL)
|
|
Packit |
87b8d1 |
g_simple_async_result_take_error (simple_async, error);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_new:
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Creates a new #GFBGraphUser.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: a new #GFBGraphUser; unref with g_object_unref()
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
GFBGraphUser*
|
|
Packit |
87b8d1 |
gfbgraph_user_new (void)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
return GFBGRAPH_USER (g_object_new (GFBGRAPH_TYPE_USER, NULL));
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_new_from_id:
|
|
Packit |
87b8d1 |
* @authorizer: a #GFBGraphAuthorizer.
|
|
Packit |
87b8d1 |
* @id: a const #gchar with the user ID.
|
|
Packit |
87b8d1 |
* @error: (allow-none): a #GError or %NULL.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Retrieves a user from the Facebook Graph with the give ID.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: (transfer full): a new #GFBGraphUser; unref with g_object_unref()
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
GFBGraphUser*
|
|
Packit |
87b8d1 |
gfbgraph_user_new_from_id (GFBGraphAuthorizer *authorizer, const gchar *id, GError **error)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
return GFBGRAPH_USER (gfbgraph_node_new_from_id (authorizer, id, GFBGRAPH_TYPE_USER, error));
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_me:
|
|
Packit |
87b8d1 |
* @authorizer: a #GFBGraphAuthorizer.
|
|
Packit |
87b8d1 |
* @error: (allow-none): a #GError or %NULL.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Retrieve the current user logged using the https://graph.facebook.com/me Graph API function.
|
|
Packit |
87b8d1 |
* See gfbgraph_user_get_my_async() for the asynchronous version of this call.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: (transfer full): a #GFBGraphUser with the current user information.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
GFBGraphUser*
|
|
Packit |
87b8d1 |
gfbgraph_user_get_me (GFBGraphAuthorizer *authorizer, GError **error)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GFBGraphUser *me;
|
|
Packit |
87b8d1 |
RestProxyCall *rest_call;
|
|
Packit |
87b8d1 |
const gchar *payload;
|
|
Packit |
87b8d1 |
gboolean result;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
me = NULL;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
rest_call = gfbgraph_new_rest_call (authorizer);
|
|
Packit |
87b8d1 |
rest_proxy_call_set_function (rest_call, ME_FUNCTION);
|
|
Packit |
87b8d1 |
rest_proxy_call_set_method (rest_call, "GET");
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
result = rest_proxy_call_sync (rest_call, error);
|
|
Packit |
87b8d1 |
if (result) {
|
|
Packit |
87b8d1 |
JsonParser *parser;
|
|
Packit |
87b8d1 |
JsonNode *node;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
payload = rest_proxy_call_get_payload (rest_call);
|
|
Packit |
87b8d1 |
parser = json_parser_new ();
|
|
Packit |
87b8d1 |
if (json_parser_load_from_data (parser, payload, -1, error)) {
|
|
Packit |
87b8d1 |
node = json_parser_get_root (parser);
|
|
Packit |
87b8d1 |
me = GFBGRAPH_USER (json_gobject_deserialize (GFBGRAPH_TYPE_USER, node));
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_object_unref (parser);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
return me;
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_me_async:
|
|
Packit |
87b8d1 |
* @authorizer: a #GFBGraphAuthorizer.
|
|
Packit |
87b8d1 |
* @cancellable: (allow-none): An optional #GCancellable object, or %NULL.
|
|
Packit |
87b8d1 |
* @callback: (scope async): A #GAsyncReadyCallback to call when the request is completed.
|
|
Packit |
87b8d1 |
* @user_data: (closure): The data to pass to @callback.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Asynchronously retrieve the current user logged. See gfbgraph_user_get_me() for the
|
|
Packit |
87b8d1 |
* synchronous version of this call.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* When the operation is finished, @callback will be called. You can then call gfbgraph_user_get_me_finish()
|
|
Packit |
87b8d1 |
* to get the #GFBGraphUser for to the current user logged.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
void
|
|
Packit |
87b8d1 |
gfbgraph_user_get_me_async (GFBGraphAuthorizer *authorizer, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GSimpleAsyncResult *simple_async;
|
|
Packit |
87b8d1 |
GFBGraphUserAsyncData *data;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer));
|
|
Packit |
87b8d1 |
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
|
Packit |
87b8d1 |
g_return_if_fail (callback != NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
simple_async = g_simple_async_result_new (G_OBJECT (authorizer), callback, user_data, gfbgraph_user_get_me_async);
|
|
Packit |
87b8d1 |
g_simple_async_result_set_check_cancellable (simple_async, cancellable);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
data = g_slice_new (GFBGraphUserAsyncData);
|
|
Packit |
87b8d1 |
data->user = NULL;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_simple_async_result_set_op_res_gpointer (simple_async, data, (GDestroyNotify) gfbgraph_user_async_data_free);
|
|
Packit |
87b8d1 |
g_simple_async_result_run_in_thread (simple_async, (GSimpleAsyncThreadFunc) gfbgraph_user_get_me_async_thread, G_PRIORITY_DEFAULT, cancellable);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_object_unref (simple_async);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_me_async_finish:
|
|
Packit |
87b8d1 |
* @authorizer: a #GFBGraphAuthorizer.
|
|
Packit |
87b8d1 |
* @result: A #GAsyncResult.
|
|
Packit |
87b8d1 |
* @error: (allow-none): An optional #GError, or %NULL.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Finishes an asynchronous operation started with
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_me_async().
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: (transfer full): a #GFBGraphUser for to the current user logged.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
GFBGraphUser*
|
|
Packit |
87b8d1 |
gfbgraph_user_get_me_async_finish (GFBGraphAuthorizer *authorizer, GAsyncResult *result, GError **error)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GSimpleAsyncResult *simple_async;
|
|
Packit |
87b8d1 |
GFBGraphUserAsyncData *data;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (authorizer), gfbgraph_user_get_me_async), NULL);
|
|
Packit |
87b8d1 |
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
simple_async = G_SIMPLE_ASYNC_RESULT (result);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
if (g_simple_async_result_propagate_error (simple_async, error))
|
|
Packit |
87b8d1 |
return NULL;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
data = (GFBGraphUserAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
|
|
Packit |
87b8d1 |
return data->user;
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_albums:
|
|
Packit |
87b8d1 |
* @user: a #GFBGraphUser.
|
|
Packit |
87b8d1 |
* @authorizer: a #GFBGraphAuthorizer.
|
|
Packit |
87b8d1 |
* @error: (allow-none): An optional #GError, or %NULL.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Retrieve the albums nodes owned by the @user. This functions call the function ID/albums.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: (element-type GFBGraphAlbum) (transfer full): a newly-allocated #GList with the albums nodes owned by the given user.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
GList*
|
|
Packit |
87b8d1 |
gfbgraph_user_get_albums (GFBGraphUser *user, GFBGraphAuthorizer *authorizer, GError **error)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
|
|
Packit |
87b8d1 |
g_return_val_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer), NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
return gfbgraph_node_get_connection_nodes (GFBGRAPH_NODE (user), GFBGRAPH_TYPE_ALBUM, authorizer, error);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_albums_async:
|
|
Packit |
87b8d1 |
* @user: a #GFBGraphUser.
|
|
Packit |
87b8d1 |
* @authorizer: a #GFBGraphAuthorizer.
|
|
Packit |
87b8d1 |
* @cancellable: (allow-none): An optional #GCancellable object, or %NULL.
|
|
Packit |
87b8d1 |
* @callback: (scope async): A #GAsyncReadyCallback to call when the request is completed.
|
|
Packit |
87b8d1 |
* @user_data: (closure): The data to pass to @callback.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Asynchronously retrieve the albums nodes owned by the @user. See gfbgraph_user_get_albums() for the
|
|
Packit |
87b8d1 |
* synchronous version of this call.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* When the operation is finished, @callback will be called. You can then call gfbgraph_user_get_albums_async_finish()
|
|
Packit |
87b8d1 |
* to get the #GList of #GFBGraphAlbum owned by the @user.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
void
|
|
Packit |
87b8d1 |
gfbgraph_user_get_albums_async (GFBGraphUser *user, GFBGraphAuthorizer *authorizer, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GSimpleAsyncResult *simple_async;
|
|
Packit |
87b8d1 |
GFBGraphUserConnectionAsyncData *data;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_return_if_fail (GFBGRAPH_IS_USER (user));
|
|
Packit |
87b8d1 |
g_return_if_fail (GFBGRAPH_IS_AUTHORIZER (authorizer));
|
|
Packit |
87b8d1 |
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
|
Packit |
87b8d1 |
g_return_if_fail (callback != NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
simple_async = g_simple_async_result_new (G_OBJECT (user), callback, user_data, gfbgraph_user_get_albums_async);
|
|
Packit |
87b8d1 |
g_simple_async_result_set_check_cancellable (simple_async, cancellable);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
data = g_slice_new (GFBGraphUserConnectionAsyncData);
|
|
Packit |
87b8d1 |
data->nodes = NULL;
|
|
Packit |
87b8d1 |
data->authorizer = authorizer;
|
|
Packit |
87b8d1 |
g_object_ref (data->authorizer);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_simple_async_result_set_op_res_gpointer (simple_async, data, (GDestroyNotify) gfbgraph_user_connection_async_data_free);
|
|
Packit |
87b8d1 |
g_simple_async_result_run_in_thread (simple_async, (GSimpleAsyncThreadFunc) gfbgraph_user_get_albums_async_thread, G_PRIORITY_DEFAULT, cancellable);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_object_unref (simple_async);
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_albums_async_finish:
|
|
Packit |
87b8d1 |
* @user: a #GFBGraphUser.
|
|
Packit |
87b8d1 |
* @result: A #GAsyncResult.
|
|
Packit |
87b8d1 |
* @error: (allow-none): An optional #GError, or %NULL.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Finishes an asynchronous operation started with
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_albums_async().
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: (element-type GFBGraphAlbum) (transfer full): a newly-allocated #GList of albums owned by the @user.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
GList*
|
|
Packit |
87b8d1 |
gfbgraph_user_get_albums_async_finish (GFBGraphUser *user, GAsyncResult *result, GError **error)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
GSimpleAsyncResult *simple_async;
|
|
Packit |
87b8d1 |
GFBGraphUserConnectionAsyncData *data;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
|
|
Packit |
87b8d1 |
g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (user), gfbgraph_user_get_albums_async), NULL);
|
|
Packit |
87b8d1 |
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
simple_async = G_SIMPLE_ASYNC_RESULT (result);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
if (g_simple_async_result_propagate_error (simple_async, error))
|
|
Packit |
87b8d1 |
return NULL;
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
data = (GFBGraphUserConnectionAsyncData *) g_simple_async_result_get_op_res_gpointer (simple_async);
|
|
Packit |
87b8d1 |
return data->nodes;
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_name:
|
|
Packit |
87b8d1 |
* @user: a #GFBGraphUser.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Get the user full name.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: (transfer none): a const #gchar with the user full name, or %NULL.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
const gchar*
|
|
Packit |
87b8d1 |
gfbgraph_user_get_name (GFBGraphUser *user)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
return user->priv->name;
|
|
Packit |
87b8d1 |
}
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
/**
|
|
Packit |
87b8d1 |
* gfbgraph_user_get_email:
|
|
Packit |
87b8d1 |
* @user: a #GFBGraphUser.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Get the user email. To retrieve this propertie, you need 'email' extended
|
|
Packit |
87b8d1 |
* permission.
|
|
Packit |
87b8d1 |
*
|
|
Packit |
87b8d1 |
* Returns: (transfer none): a const #gchar with the user email, or %NULL.
|
|
Packit |
87b8d1 |
**/
|
|
Packit |
87b8d1 |
const gchar*
|
|
Packit |
87b8d1 |
gfbgraph_user_get_email (GFBGraphUser *user)
|
|
Packit |
87b8d1 |
{
|
|
Packit |
87b8d1 |
g_return_val_if_fail (GFBGRAPH_IS_USER (user), NULL);
|
|
Packit |
87b8d1 |
|
|
Packit |
87b8d1 |
return user->priv->email;
|
|
Packit |
87b8d1 |
}
|