|
Packit |
4b6dd7 |
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
Packit |
4b6dd7 |
/*
|
|
Packit |
4b6dd7 |
* GData Client
|
|
Packit |
4b6dd7 |
* Copyright (C) Philip Withnall 2008–2010 <philip@tecnocode.co.uk>
|
|
Packit |
4b6dd7 |
* Copyright (C) Richard Schwarting 2010 <aquarichy@gmail.com>
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* GData Client is free software; you can redistribute it and/or
|
|
Packit |
4b6dd7 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
4b6dd7 |
* License as published by the Free Software Foundation; either
|
|
Packit |
4b6dd7 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* GData Client is distributed in the hope that it will be useful,
|
|
Packit |
4b6dd7 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
4b6dd7 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
4b6dd7 |
* Lesser General Public License for more details.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
4b6dd7 |
* License along with GData Client. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* SECTION:gdata-commentable
|
|
Packit |
4b6dd7 |
* @short_description: GData commentable interface
|
|
Packit |
4b6dd7 |
* @stability: Stable
|
|
Packit |
4b6dd7 |
* @include: gdata/gdata-commentable.h
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* #GDataCommentable is an interface which can be implemented by commentable objects: objects which support having comments added to them by users,
|
|
Packit |
4b6dd7 |
* such as videos and photos.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Comments may be queried, added and deleted. Note that they may not be edited.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* #GDataCommentable objects may not support all operations on comments, on an instance-by-instance basis (i.e. it's an invalid assumption that if,
|
|
Packit |
4b6dd7 |
* for example, one #GDataYouTubeVideo doesn't support adding comments all other #GDataYouTubeVideos don't support adding comments either).
|
|
Packit |
4b6dd7 |
* Specific documentation for a particular type of #GDataCommentable may state otherwise, though.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* <example>
|
|
Packit |
4b6dd7 |
* <title>Querying for Comments</title>
|
|
Packit |
4b6dd7 |
* <programlisting>
|
|
Packit |
4b6dd7 |
* GDataService *service;
|
|
Packit |
4b6dd7 |
* GDataCommentable *commentable;
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Create a service */
|
|
Packit |
4b6dd7 |
* service = create_service ();
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Retrieve the GDataCommentable which is going to be queried. This may be, for example, a GDataYouTubeVideo. */
|
|
Packit |
4b6dd7 |
* commentable = get_commentable ();
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Start the async. query for the comments. */
|
|
Packit |
4b6dd7 |
* gdata_commentable_query_comments_async (commentable, service, NULL, NULL, NULL, NULL, NULL, (GAsyncReadyCallback) query_comments_cb, NULL);
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* g_object_unref (service);
|
|
Packit |
4b6dd7 |
* g_object_unref (commentable);
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* static void
|
|
Packit |
4b6dd7 |
* query_comments_cb (GDataCommentable *commentable, GAsyncResult *result, gpointer user_data)
|
|
Packit |
4b6dd7 |
* {
|
|
Packit |
4b6dd7 |
* GDataFeed *comment_feed;
|
|
Packit |
4b6dd7 |
* GList *comments, *i;
|
|
Packit |
4b6dd7 |
* GError *error = NULL;
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* comment_feed = gdata_commentable_query_comments_finish (commentable, result, &error);
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* if (error != NULL) {
|
|
Packit |
4b6dd7 |
* /* Error! */
|
|
Packit |
4b6dd7 |
* g_error ("Error querying comments: %s", error->message);
|
|
Packit |
4b6dd7 |
* g_error_free (error);
|
|
Packit |
4b6dd7 |
* return;
|
|
Packit |
4b6dd7 |
* }
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Examine the comments. */
|
|
Packit |
4b6dd7 |
* comments = gdata_feed_get_entries (comment_feed);
|
|
Packit |
4b6dd7 |
* for (i = comments; i != NULL; i = i->next) {
|
|
Packit |
4b6dd7 |
* /* Note that this will actually be a subclass of GDataComment,
|
|
Packit |
4b6dd7 |
* * such as GDataYouTubeComment or GDataPicasaWebComment. */
|
|
Packit |
4b6dd7 |
* GDataComment *comment = GDATA_COMMENT (i->data);
|
|
Packit |
4b6dd7 |
* GDataAuthor *author;
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* /* Note that in practice it might not always be safe to assume that a comment always has an author. */
|
|
Packit |
4b6dd7 |
* author = GDATA_AUTHOR (gdata_entry_get_authors (GDATA_ENTRY (comment))->data);
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* g_message ("Comment by %s (%s): %s",
|
|
Packit |
4b6dd7 |
* gdata_author_get_name (author),
|
|
Packit |
4b6dd7 |
* gdata_author_get_uri (author),
|
|
Packit |
4b6dd7 |
* gdata_entry_get_content (GDATA_ENTRY (comment)));
|
|
Packit |
4b6dd7 |
* }
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* g_object_unref (comment_feed);
|
|
Packit |
4b6dd7 |
* }
|
|
Packit |
4b6dd7 |
* </programlisting>
|
|
Packit |
4b6dd7 |
* </example>
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#include <config.h>
|
|
Packit |
4b6dd7 |
#include <glib.h>
|
|
Packit |
4b6dd7 |
#include <glib/gi18n-lib.h>
|
|
Packit |
4b6dd7 |
#include <string.h>
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#include "gdata-commentable.h"
|
|
Packit |
4b6dd7 |
#include "gdata-service.h"
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_DEFINE_INTERFACE (GDataCommentable, gdata_commentable, GDATA_TYPE_ENTRY)
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_commentable_default_init (GDataCommentableInterface *iface)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
iface->comment_type = G_TYPE_INVALID;
|
|
Packit |
4b6dd7 |
iface->get_authorization_domain = NULL;
|
|
Packit |
4b6dd7 |
iface->get_query_comments_uri = NULL;
|
|
Packit |
4b6dd7 |
iface->get_insert_comment_uri = NULL;
|
|
Packit |
4b6dd7 |
iface->is_comment_deletable = NULL;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static GType
|
|
Packit |
4b6dd7 |
get_comment_type (GDataCommentableInterface *iface)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GType comment_type;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
comment_type = iface->comment_type;
|
|
Packit |
4b6dd7 |
g_assert (g_type_is_a (comment_type, GDATA_TYPE_COMMENT) == TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return comment_type;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_query_comments:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @service: a #GDataService representing the service with which the object's comments will be manipulated
|
|
Packit |
4b6dd7 |
* @query: (allow-none): a #GDataQuery with query parameters, or %NULL
|
|
Packit |
4b6dd7 |
* @cancellable: (allow-none): optional #GCancellable object, or %NULL
|
|
Packit |
4b6dd7 |
* @progress_callback: (allow-none) (scope call) (closure progress_user_data): a #GDataQueryProgressCallback to call when a comment is loaded, or %NULL
|
|
Packit |
4b6dd7 |
* @progress_user_data: (closure): data to pass to the @progress_callback function
|
|
Packit |
4b6dd7 |
* @error: a #GError, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Retrieves a #GDataFeed containing the #GDataComments representing the comments on the #GDataCommentable which match the given @query.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* If the #GDataCommentable doesn't support commenting, %NULL will be returned and @error will be set to %GDATA_SERVICE_ERROR_FORBIDDEN. This is in
|
|
Packit |
4b6dd7 |
* contrast to if it does support commenting but hasn't had any comments added yet, in which case an empty #GDataFeed will be returned and no error
|
|
Packit |
4b6dd7 |
* will be set.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: (transfer full) (allow-none): a #GDataFeed of #GDataComments, or %NULL; unref with g_object_unref()
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
GDataFeed *
|
|
Packit |
4b6dd7 |
gdata_commentable_query_comments (GDataCommentable *self, GDataService *service, GDataQuery *query,
|
|
Packit |
4b6dd7 |
GCancellable *cancellable, GDataQueryProgressCallback progress_callback,
|
|
Packit |
4b6dd7 |
gpointer progress_user_data, GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCommentableInterface *iface;
|
|
Packit |
4b6dd7 |
gchar *uri;
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GDataAuthorizationDomain *domain = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENTABLE (self), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_SERVICE (service), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (query == NULL || GDATA_IS_QUERY (query), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
iface = GDATA_COMMENTABLE_GET_IFACE (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the comment feed URI. */
|
|
Packit |
4b6dd7 |
g_assert (iface->get_query_comments_uri != NULL);
|
|
Packit |
4b6dd7 |
uri = iface->get_query_comments_uri (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* The URI can be NULL when no comments and thus no feedLink is present in a GDataCommentable */
|
|
Packit |
4b6dd7 |
if (uri == NULL) {
|
|
Packit |
4b6dd7 |
/* Translators: This is an error message for if a user attempts to retrieve comments from an entry (such as a video) which doesn't
|
|
Packit |
4b6dd7 |
* support comments. */
|
|
Packit |
4b6dd7 |
g_set_error_literal (error, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN, _("This entry does not support comments."));
|
|
Packit |
4b6dd7 |
return NULL;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation domain. */
|
|
Packit |
4b6dd7 |
if (iface->get_authorization_domain != NULL) {
|
|
Packit |
4b6dd7 |
domain = iface->get_authorization_domain (self);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the comment feed. */
|
|
Packit |
4b6dd7 |
feed = gdata_service_query (service, domain, uri, query, get_comment_type (iface), cancellable, progress_callback, progress_user_data, error);
|
|
Packit |
4b6dd7 |
g_free (uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return feed;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
query_comments_async_cb (GDataService *service, GAsyncResult *service_result, gpointer user_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_autoptr(GTask) commentable_task = G_TASK (user_data);
|
|
Packit |
4b6dd7 |
g_autoptr(GDataFeed) feed = NULL;
|
|
Packit |
4b6dd7 |
g_autoptr(GError) error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
feed = gdata_service_query_finish (service, service_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error != NULL)
|
|
Packit |
4b6dd7 |
g_task_return_error (commentable_task, g_steal_pointer (&error));
|
|
Packit |
4b6dd7 |
else
|
|
Packit |
4b6dd7 |
g_task_return_pointer (commentable_task, g_steal_pointer (&feed), g_object_unref);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_query_comments_async:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @service: a #GDataService representing the service with which the object's comments will be manipulated
|
|
Packit |
4b6dd7 |
* @query: (allow-none): a #GDataQuery with query parameters, or %NULL
|
|
Packit |
4b6dd7 |
* @cancellable: (allow-none): optional #GCancellable object, or %NULL
|
|
Packit |
4b6dd7 |
* @progress_callback: (allow-none) (scope notified) (closure progress_user_data): a #GDataQueryProgressCallback to call when a comment is loaded,
|
|
Packit |
4b6dd7 |
* or %NULL
|
|
Packit |
4b6dd7 |
* @progress_user_data: (closure): data to pass to the @progress_callback function
|
|
Packit |
4b6dd7 |
* @destroy_progress_user_data: (allow-none): a function to call when @progress_callback will not be called any more, or %NULL; this function will be
|
|
Packit |
4b6dd7 |
* called with @progress_user_data as a parameter and can be used to free any memory allocated for it
|
|
Packit |
4b6dd7 |
* @callback: a #GAsyncReadyCallback to call when the query is finished
|
|
Packit |
4b6dd7 |
* @user_data: (closure): data to pass to the @callback function
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Retrieves a #GDataFeed containing the #GDataComments representing the comments on the #GDataCommentable which match the given @query.
|
|
Packit |
4b6dd7 |
* @self, @service and @query are all reffed when this method is called, so can safely be freed after this method returns.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* For more details, see gdata_commentable_query_comments(), which is the synchronous version of this method.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* When the operation is finished, @callback will be called. You can then call gdata_commentable_query_comments_finish() to get the results of the
|
|
Packit |
4b6dd7 |
* operation.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_commentable_query_comments_async (GDataCommentable *self, GDataService *service, GDataQuery *query, GCancellable *cancellable,
|
|
Packit |
4b6dd7 |
GDataQueryProgressCallback progress_callback, gpointer progress_user_data,
|
|
Packit |
4b6dd7 |
GDestroyNotify destroy_progress_user_data, GAsyncReadyCallback callback, gpointer user_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCommentableInterface *iface;
|
|
Packit |
4b6dd7 |
gchar *uri;
|
|
Packit |
4b6dd7 |
g_autoptr(GTask) task = NULL;
|
|
Packit |
4b6dd7 |
GDataAuthorizationDomain *domain = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_COMMENTABLE (self));
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_SERVICE (service));
|
|
Packit |
4b6dd7 |
g_return_if_fail (query == NULL || GDATA_IS_QUERY (query));
|
|
Packit |
4b6dd7 |
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
|
Packit |
4b6dd7 |
g_return_if_fail (callback != NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
iface = GDATA_COMMENTABLE_GET_IFACE (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the comment feed URI. */
|
|
Packit |
4b6dd7 |
g_assert (iface->get_query_comments_uri != NULL);
|
|
Packit |
4b6dd7 |
uri = iface->get_query_comments_uri (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Build the async result. */
|
|
Packit |
4b6dd7 |
task = g_task_new (self, cancellable, callback, user_data);
|
|
Packit |
4b6dd7 |
g_task_set_source_tag (task, gdata_commentable_query_comments_async);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* The URI can be NULL when no comments and thus no feedLink is present in a GDataCommentable */
|
|
Packit |
4b6dd7 |
if (uri == NULL) {
|
|
Packit |
4b6dd7 |
g_task_return_new_error (task, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN,
|
|
Packit |
4b6dd7 |
/* Translators: This is an error message for if a user attempts to retrieve comments from an entry
|
|
Packit |
4b6dd7 |
* (such as a video) which doesn't support comments. */
|
|
Packit |
4b6dd7 |
_("This entry does not support comments."));
|
|
Packit |
4b6dd7 |
return;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation domain. */
|
|
Packit |
4b6dd7 |
if (iface->get_authorization_domain != NULL) {
|
|
Packit |
4b6dd7 |
domain = iface->get_authorization_domain (self);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the comment feed. */
|
|
Packit |
4b6dd7 |
gdata_service_query_async (service, domain, uri, query, get_comment_type (iface), cancellable, progress_callback, progress_user_data,
|
|
Packit |
4b6dd7 |
destroy_progress_user_data, (GAsyncReadyCallback) query_comments_async_cb, g_object_ref (task));
|
|
Packit |
4b6dd7 |
g_free (uri);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_query_comments_finish:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @result: a #GAsyncResult
|
|
Packit |
4b6dd7 |
* @error: a #GError, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Finishes an asynchronous comment query operation started with gdata_commentable_query_comments_async().
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: (transfer full) (allow-none): a #GDataFeed of #GDataComments, or %NULL; unref with g_object_unref()
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
GDataFeed *
|
|
Packit |
4b6dd7 |
gdata_commentable_query_comments_finish (GDataCommentable *self, GAsyncResult *result, GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENTABLE (self), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (G_IS_ASYNC_RESULT (result), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_task_is_valid (result, self), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_async_result_is_tagged (result, gdata_commentable_query_comments_async), NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return g_task_propagate_pointer (G_TASK (result), error);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_insert_comment:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @service: a #GDataService with which the comment will be added
|
|
Packit |
4b6dd7 |
* @comment_: a new comment to be added to the #GDataCommentable
|
|
Packit |
4b6dd7 |
* @cancellable: (allow-none): optional #GCancellable object, or %NULL
|
|
Packit |
4b6dd7 |
* @error: a #GError, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Adds @comment to the #GDataCommentable.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* If the #GDataCommentable doesn't support commenting, %NULL will be returned and @error will be set to %GDATA_SERVICE_ERROR_FORBIDDEN.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: (transfer full) (allow-none): the added #GDataComment, or %NULL; unref with g_object_unref()
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
GDataComment *
|
|
Packit |
4b6dd7 |
gdata_commentable_insert_comment (GDataCommentable *self, GDataService *service, GDataComment *comment_, GCancellable *cancellable, GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCommentableInterface *iface;
|
|
Packit |
4b6dd7 |
gchar *uri;
|
|
Packit |
4b6dd7 |
GDataComment *new_comment;
|
|
Packit |
4b6dd7 |
GDataAuthorizationDomain *domain = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENTABLE (self), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_SERVICE (service), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENT (comment_), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
iface = GDATA_COMMENTABLE_GET_IFACE (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_type_is_a (G_OBJECT_TYPE (comment_), get_comment_type (iface)) == TRUE, NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the upload URI. */
|
|
Packit |
4b6dd7 |
g_assert (iface->get_insert_comment_uri != NULL);
|
|
Packit |
4b6dd7 |
uri = iface->get_insert_comment_uri (self, comment_);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (uri == NULL) {
|
|
Packit |
4b6dd7 |
/* Translators: This is an error message for if a user attempts to add a comment to an entry (such as a video) which doesn't support
|
|
Packit |
4b6dd7 |
* comments. */
|
|
Packit |
4b6dd7 |
g_set_error_literal (error, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN, _("Comments may not be added to this entry."));
|
|
Packit |
4b6dd7 |
return NULL;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation domain. */
|
|
Packit |
4b6dd7 |
if (iface->get_authorization_domain != NULL) {
|
|
Packit |
4b6dd7 |
domain = iface->get_authorization_domain (self);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Add the comment. */
|
|
Packit |
4b6dd7 |
new_comment = GDATA_COMMENT (gdata_service_insert_entry (service, domain, uri, GDATA_ENTRY (comment_), cancellable, error));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return new_comment;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
insert_comment_async_cb (GDataService *service, GAsyncResult *service_result, gpointer user_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_autoptr(GTask) commentable_task = G_TASK (user_data);
|
|
Packit |
4b6dd7 |
g_autoptr(GDataEntry) new_comment = NULL;
|
|
Packit |
4b6dd7 |
g_autoptr(GError) error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
new_comment = gdata_service_insert_entry_finish (service, service_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error != NULL)
|
|
Packit |
4b6dd7 |
g_task_return_error (commentable_task, g_steal_pointer (&error));
|
|
Packit |
4b6dd7 |
else
|
|
Packit |
4b6dd7 |
g_task_return_pointer (commentable_task, g_steal_pointer (&new_comment), g_object_unref);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_insert_comment_async:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @service: a #GDataService with which the comment will be added
|
|
Packit |
4b6dd7 |
* @comment_: a new comment to be added to the #GDataCommentable
|
|
Packit |
4b6dd7 |
* @cancellable: (allow-none): optional #GCancellable object, or %NULL
|
|
Packit |
4b6dd7 |
* @callback: a #GAsyncReadyCallback to call when the operation is finished
|
|
Packit |
4b6dd7 |
* @user_data: (closure): data to pass to the @callback function
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Adds @comment to the #GDataCommentable. @self, @service and @comment_ are all reffed when this method is called, so can safely be freed after this
|
|
Packit |
4b6dd7 |
* method returns.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* For more details, see gdata_commentable_insert_comment(), which is the synchronous version of this method.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* When the operation is finished, @callback will be called. You can then call gdata_commentable_insert_comment_finish() to get the results of the
|
|
Packit |
4b6dd7 |
* operation.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_commentable_insert_comment_async (GDataCommentable *self, GDataService *service, GDataComment *comment_, GCancellable *cancellable,
|
|
Packit |
4b6dd7 |
GAsyncReadyCallback callback, gpointer user_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCommentableInterface *iface;
|
|
Packit |
4b6dd7 |
g_autofree gchar *uri = NULL;
|
|
Packit |
4b6dd7 |
g_autoptr(GTask) task = NULL;
|
|
Packit |
4b6dd7 |
GDataAuthorizationDomain *domain = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_COMMENTABLE (self));
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_SERVICE (service));
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_COMMENT (comment_));
|
|
Packit |
4b6dd7 |
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
iface = GDATA_COMMENTABLE_GET_IFACE (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_if_fail (g_type_is_a (G_OBJECT_TYPE (comment_), get_comment_type (iface)) == TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the upload URI. */
|
|
Packit |
4b6dd7 |
g_assert (iface->get_insert_comment_uri != NULL);
|
|
Packit |
4b6dd7 |
uri = iface->get_insert_comment_uri (self, comment_);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Build the async result. */
|
|
Packit |
4b6dd7 |
task = g_task_new (self, cancellable, callback, user_data);
|
|
Packit |
4b6dd7 |
g_task_set_source_tag (task, gdata_commentable_insert_comment_async);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* The URI can be NULL when no comments and thus no feedLink is present in a GDataCommentable */
|
|
Packit |
4b6dd7 |
if (uri == NULL) {
|
|
Packit |
4b6dd7 |
g_task_return_new_error (task, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN,
|
|
Packit |
4b6dd7 |
/* Translators: This is an error message for if a user attempts to add a comment to an entry
|
|
Packit |
4b6dd7 |
* (such as a video) which doesn't support comments. */
|
|
Packit |
4b6dd7 |
_("Comments may not be added to this entry."));
|
|
Packit |
4b6dd7 |
return;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation domain. */
|
|
Packit |
4b6dd7 |
if (iface->get_authorization_domain != NULL) {
|
|
Packit |
4b6dd7 |
domain = iface->get_authorization_domain (self);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Add the comment. */
|
|
Packit |
4b6dd7 |
gdata_service_insert_entry_async (service, domain, uri, GDATA_ENTRY (comment_), cancellable, (GAsyncReadyCallback) insert_comment_async_cb,
|
|
Packit |
4b6dd7 |
g_object_ref (task));
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_insert_comment_finish:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @result: a #GAsyncResult
|
|
Packit |
4b6dd7 |
* @error: a #GError, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Finishes an asynchronous comment insertion operation started with gdata_commentable_insert_comment_async().
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: (transfer full) (allow-none): the added #GDataComment, or %NULL; unref with g_object_unref()
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
GDataComment *
|
|
Packit |
4b6dd7 |
gdata_commentable_insert_comment_finish (GDataCommentable *self, GAsyncResult *result, GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENTABLE (self), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (G_IS_ASYNC_RESULT (result), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (error == NULL || *error == NULL, NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_task_is_valid (result, self), NULL);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_async_result_is_tagged (result, gdata_commentable_insert_comment_async), NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return g_task_propagate_pointer (G_TASK (result), error);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_delete_comment:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @service: a #GDataService with which the comment will be deleted
|
|
Packit |
4b6dd7 |
* @comment_: a comment to be deleted
|
|
Packit |
4b6dd7 |
* @cancellable: (allow-none): optional #GCancellable object, or %NULL
|
|
Packit |
4b6dd7 |
* @error: a #GError, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Deletes @comment from the #GDataCommentable.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* If the given @comment isn't deletable (either because the service doesn't support deleting comments at all, or because this particular comment
|
|
Packit |
4b6dd7 |
* is not deletable due to having insufficient permissions), %GDATA_SERVICE_ERROR_FORBIDDEN will be set in @error and %FALSE will be returned.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: %TRUE if the comment was successfully deleted, %FALSE otherwise
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
gboolean
|
|
Packit |
4b6dd7 |
gdata_commentable_delete_comment (GDataCommentable *self, GDataService *service, GDataComment *comment_, GCancellable *cancellable, GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCommentableInterface *iface;
|
|
Packit |
4b6dd7 |
GDataAuthorizationDomain *domain = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENTABLE (self), FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_SERVICE (service), FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENT (comment_), FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
iface = GDATA_COMMENTABLE_GET_IFACE (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_type_is_a (G_OBJECT_TYPE (comment_), get_comment_type (iface)) == TRUE, FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (iface->is_comment_deletable != NULL);
|
|
Packit |
4b6dd7 |
if (iface->is_comment_deletable (self, comment_) == FALSE) {
|
|
Packit |
4b6dd7 |
/* Translators: This is an error message for if a user attempts to delete a comment they're not allowed to delete. */
|
|
Packit |
4b6dd7 |
g_set_error_literal (error, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN, _("This comment may not be deleted."));
|
|
Packit |
4b6dd7 |
return FALSE;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation domain. */
|
|
Packit |
4b6dd7 |
if (iface->get_authorization_domain != NULL) {
|
|
Packit |
4b6dd7 |
domain = iface->get_authorization_domain (self);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Delete the comment. */
|
|
Packit |
4b6dd7 |
return gdata_service_delete_entry (service, domain, GDATA_ENTRY (comment_), cancellable, error);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
delete_comment_async_cb (GDataService *service, GAsyncResult *service_result, gpointer user_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_autoptr(GTask) commentable_task = G_TASK (user_data);
|
|
Packit |
4b6dd7 |
g_autoptr(GError) error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (!gdata_service_delete_entry_finish (service, service_result, &error))
|
|
Packit |
4b6dd7 |
g_task_return_error (commentable_task, g_steal_pointer (&error));
|
|
Packit |
4b6dd7 |
else
|
|
Packit |
4b6dd7 |
g_task_return_boolean (commentable_task, TRUE);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_delete_comment_async:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @service: a #GDataService with which the comment will be deleted
|
|
Packit |
4b6dd7 |
* @comment_: a comment to be deleted
|
|
Packit |
4b6dd7 |
* @cancellable: (allow-none): optional #GCancellable object, or %NULL
|
|
Packit |
4b6dd7 |
* @callback: a #GAsyncReadyCallback to call when the operation is finished
|
|
Packit |
4b6dd7 |
* @user_data: (closure): data to pass to the @callback function
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Deletes @comment from the #GDataCommentable. @self, @service and @comment_ are all reffed when this method is called, so can safely be freed after
|
|
Packit |
4b6dd7 |
* this method returns.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* For more details, see gdata_commentable_delete_comment(), which is the synchronous version of this method.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* When the operation is finished, @callback will be called. You can then call gdata_commentable_delete_comment_finish() to get the results of the
|
|
Packit |
4b6dd7 |
* operation.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
void
|
|
Packit |
4b6dd7 |
gdata_commentable_delete_comment_async (GDataCommentable *self, GDataService *service, GDataComment *comment_, GCancellable *cancellable,
|
|
Packit |
4b6dd7 |
GAsyncReadyCallback callback, gpointer user_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataCommentableInterface *iface;
|
|
Packit |
4b6dd7 |
g_autoptr(GTask) task = NULL;
|
|
Packit |
4b6dd7 |
GDataAuthorizationDomain *domain = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_COMMENTABLE (self));
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_SERVICE (service));
|
|
Packit |
4b6dd7 |
g_return_if_fail (GDATA_IS_COMMENT (comment_));
|
|
Packit |
4b6dd7 |
g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
iface = GDATA_COMMENTABLE_GET_IFACE (self);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_return_if_fail (g_type_is_a (G_OBJECT_TYPE (comment_), get_comment_type (iface)) == TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Build the async result. */
|
|
Packit |
4b6dd7 |
task = g_task_new (self, cancellable, callback, user_data);
|
|
Packit |
4b6dd7 |
g_task_set_source_tag (task, gdata_commentable_delete_comment_async);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (iface->is_comment_deletable != NULL);
|
|
Packit |
4b6dd7 |
if (iface->is_comment_deletable (self, comment_) == FALSE) {
|
|
Packit |
4b6dd7 |
g_task_return_new_error (task, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN,
|
|
Packit |
4b6dd7 |
/* Translators: This is an error message for if a user attempts to delete a comment they're not allowed to delete. */
|
|
Packit |
4b6dd7 |
_("This comment may not be deleted."));
|
|
Packit |
4b6dd7 |
return;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation domain. */
|
|
Packit |
4b6dd7 |
if (iface->get_authorization_domain != NULL) {
|
|
Packit |
4b6dd7 |
domain = iface->get_authorization_domain (self);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Delete the comment. */
|
|
Packit |
4b6dd7 |
gdata_service_delete_entry_async (service, domain, GDATA_ENTRY (comment_), cancellable, (GAsyncReadyCallback) delete_comment_async_cb, g_object_ref (task));
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/**
|
|
Packit |
4b6dd7 |
* gdata_commentable_delete_comment_finish:
|
|
Packit |
4b6dd7 |
* @self: a #GDataCommentable
|
|
Packit |
4b6dd7 |
* @result: a #GAsyncResult
|
|
Packit |
4b6dd7 |
* @error: a #GError, or %NULL
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Finishes an asynchronous comment deletion operation started with gdata_commentable_delete_comment_async().
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Return value: %TRUE if the comment was successfully deleted, %FALSE otherwise
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* Since: 0.10.0
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
gboolean
|
|
Packit |
4b6dd7 |
gdata_commentable_delete_comment_finish (GDataCommentable *self, GAsyncResult *result, GError **error)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (GDATA_IS_COMMENTABLE (self), FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_task_is_valid (result, self), FALSE);
|
|
Packit |
4b6dd7 |
g_return_val_if_fail (g_async_result_is_tagged (result, gdata_commentable_delete_comment_async), FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return g_task_propagate_boolean (G_TASK (result), error);
|
|
Packit |
4b6dd7 |
}
|