/** * gdata_youtube_comment_set_parent_comment_uri: * @self: a #GDataYouTubeComment * @parent_comment_uri: a new parent comment URI, or %NULL * * Sets the #GDataYouTubeComment:parent-comment-uri property to @parent_comment_uri. * * Set @parent_comment_uri to %NULL to unset the #GDataYouTubeComment:parent-comment-uri property in the comment (i.e. make the comment a top-level * comment). * * See the <ulink type="http" url="http://code.google.com/apis/youtube/2.0/developers_guide_protocol_comments.html#Retrieve_comments">online * documentation</ulink> for more information. * * Since: 0.10.0 */ void gdata_youtube_comment_set_parent_comment_uri (GDataYouTubeComment *self, const gchar *parent_comment_uri) { GDataLink *link_; g_return_if_fail (GDATA_IS_YOUTUBE_COMMENT (self)); g_return_if_fail (parent_comment_uri == NULL || *parent_comment_uri != '\0'); link_ = gdata_entry_look_up_link (GDATA_ENTRY (self), GDATA_LINK_PARENT_COMMENT_URI); if ((link_ == NULL && parent_comment_uri == NULL) || (link_ != NULL && parent_comment_uri != NULL && g_strcmp0 (gdata_link_get_uri (link_), parent_comment_uri) == 0)) { /* Nothing to do. */ return; } else if (link_ == NULL && parent_comment_uri != NULL) { /* Add the new link. */ link_ = gdata_link_new (parent_comment_uri, GDATA_LINK_PARENT_COMMENT_URI); gdata_entry_add_link (GDATA_ENTRY (self), link_); g_object_unref (link_); } else if (link_ != NULL && parent_comment_uri == NULL) { /* Remove the old link. */ gdata_entry_remove_link (GDATA_ENTRY (self), link_); } else if (link_ != NULL && parent_comment_uri != NULL) { /* Update the existing link. */ gdata_link_set_uri (link_, parent_comment_uri); } g_object_notify (G_OBJECT (self), "parent-comment-uri"); }
static gboolean account_miner_job_process_entry (TrackerSparqlConnection *connection, GHashTable *previous_resources, const gchar *datasource_urn, GDataDocumentsService *service, GDataDocumentsEntry *doc_entry, GCancellable *cancellable, GError **error) { GDataEntry *entry = GDATA_ENTRY (doc_entry); gchar *resource = NULL; gchar *date, *identifier; const gchar *class = NULL; const gchar *mimetype_override = NULL; gboolean mtime_changed, resource_exists; gint64 new_mtime; GList *authors, *l, *parents = NULL; GDataAuthor *author; GDataLink *parent; GDataLink *alternate; const gchar *alternate_uri; GList *categories; GDataCategory *category; gboolean starred = FALSE; GDataFeed *access_rules = NULL; if (GDATA_IS_DOCUMENTS_FOLDER (doc_entry)) { GDataLink *link; link = gdata_entry_look_up_link (entry, GDATA_LINK_SELF); identifier = g_strdup_printf ("gd:collection:%s%s", PREFIX_DRIVE, gdata_link_get_uri (link)); } else { const gchar *id; id = gdata_entry_get_id (entry); identifier = g_strdup_printf ("%s%s", PREFIX_DRIVE, id); } /* remove from the list of the previous resources, if any */ if (previous_resources != NULL) g_hash_table_remove (previous_resources, identifier); if (GDATA_IS_DOCUMENTS_PRESENTATION (doc_entry)) class = "nfo:Presentation"; else if (GDATA_IS_DOCUMENTS_SPREADSHEET (doc_entry))
static GDataFeed * gdata_access_handler_real_get_rules (GDataAccessHandler *self, GDataService *service, GCancellable *cancellable, GDataQueryProgressCallback progress_callback, gpointer progress_user_data, GError **error) { GDataAccessHandlerIface *iface; GDataAuthorizationDomain *domain = NULL; GDataFeed *feed; GDataLink *_link; SoupMessage *message; SoupMessageHeaders *headers; const gchar *content_type; _link = gdata_entry_look_up_link (GDATA_ENTRY (self), GDATA_LINK_ACCESS_CONTROL_LIST); g_assert (_link != NULL); iface = GDATA_ACCESS_HANDLER_GET_IFACE (self); if (iface->get_authorization_domain != NULL) { domain = iface->get_authorization_domain (self); } message = _gdata_service_query (service, domain, gdata_link_get_uri (_link), NULL, cancellable, error); if (message == NULL) { return NULL; } g_assert (message->response_body->data != NULL); headers = message->response_headers; content_type = soup_message_headers_get_content_type (headers, NULL); if (g_strcmp0 (content_type, "application/json") == 0) { /* Definitely JSON. */ g_debug("JSON content type detected."); feed = _gdata_feed_new_from_json (GDATA_TYPE_FEED, message->response_body->data, message->response_body->length, GDATA_TYPE_ACCESS_RULE, progress_callback, progress_user_data, error); } else { /* Potentially XML. Don't bother checking the Content-Type, since the parser * will fail gracefully if the response body is not valid XML. */ g_debug("XML content type detected."); feed = _gdata_feed_new_from_xml (GDATA_TYPE_FEED, message->response_body->data, message->response_body->length, GDATA_TYPE_ACCESS_RULE, progress_callback, progress_user_data, error); } g_object_unref (message); return feed; }
/** * gdata_youtube_comment_get_parent_comment_uri: * @self: a #GDataYouTubeComment * * Gets the #GDataYouTubeComment:parent-comment-uri property. * * Return value: the parent comment URI, or %NULL * * Since: 0.10.0 */ const gchar * gdata_youtube_comment_get_parent_comment_uri (GDataYouTubeComment *self) { GDataLink *link_; g_return_val_if_fail (GDATA_IS_YOUTUBE_COMMENT (self), NULL); link_ = gdata_entry_look_up_link (GDATA_ENTRY (self), GDATA_LINK_PARENT_COMMENT_URI); if (link_ == NULL) { return NULL; } return gdata_link_get_uri (link_); }
static gboolean account_miner_job_process_entry (GomAccountMinerJob *job, GDataDocumentsEntry *doc_entry, GError **error) { GDataEntry *entry = GDATA_ENTRY (doc_entry); gchar *resource = NULL; gchar *date, *identifier; const gchar *class = NULL; const gchar *mimetype_override = NULL; gboolean mtime_changed, resource_exists; gint64 new_mtime; GList *authors, *l, *parents = NULL; GDataAuthor *author; GDataLink *parent; GDataLink *alternate; const gchar *alternate_uri; GList *categories; GDataCategory *category; gboolean starred = FALSE; GDataFeed *access_rules = NULL; if (GDATA_IS_DOCUMENTS_FOLDER (doc_entry)) { GDataLink *link; link = gdata_entry_look_up_link (entry, GDATA_LINK_SELF); identifier = g_strdup_printf ("gd:collection:%s", gdata_link_get_uri (link)); } else identifier = g_strdup (gdata_entry_get_id (entry)); /* remove from the list of the previous resources */ g_hash_table_remove (job->previous_resources, identifier); if (GDATA_IS_DOCUMENTS_PRESENTATION (doc_entry)) class = "nfo:Presentation"; else if (GDATA_IS_DOCUMENTS_SPREADSHEET (doc_entry))
static void resolve_t_param (TotemYouTubePlugin *self, GDataEntry *entry, GtkTreeIter *iter, guint tree_view, GCancellable *cancellable) { GDataLink *page_link; TParamData *data; /* We have to get the t parameter from the actual HTML video page, since Google changed how their URIs work */ page_link = gdata_entry_look_up_link (entry, GDATA_LINK_ALTERNATE); g_assert (page_link != NULL); data = g_slice_new (TParamData); data->plugin = g_object_ref (self); data->entry = g_object_ref (entry); data->path = gtk_tree_model_get_path (GTK_TREE_MODEL (self->list_store[tree_view]), iter); data->tree_view = tree_view; data->cancellable = g_object_ref (cancellable); data->message = soup_message_new (SOUP_METHOD_GET, gdata_link_get_uri (page_link)); data->cancelled_id = g_cancellable_connect (cancellable, (GCallback) resolve_t_param_cancelled_cb, data, NULL); /* Send the message. Consumes a reference to data->message after resolve_t_param_cb() finishes */ soup_session_queue_message (self->session, data->message, (SoupSessionCallback) resolve_t_param_cb, data); }
void open_in_web_browser_activate_cb (GtkAction *action, TotemYouTubePlugin *self) { GtkTreeSelection *selection; GtkTreeModel *model; GList *paths, *path; selection = gtk_tree_view_get_selection (self->tree_view[self->current_tree_view]); paths = gtk_tree_selection_get_selected_rows (selection, &model); for (path = paths; path != NULL; path = path->next) { GtkTreeIter iter; GDataYouTubeVideo *video; GDataLink *link; GError *error = NULL; if (gtk_tree_model_get_iter (model, &iter, (GtkTreePath*) (path->data)) == FALSE) continue; /* Get the HTML page for the video; its <link rel="alternate" ... /> */ gtk_tree_model_get (model, &iter, 3, &video, -1); link = gdata_entry_look_up_link (GDATA_ENTRY (video), GDATA_LINK_ALTERNATE); g_object_unref (video); /* Display the page */ if (gtk_show_uri (gtk_widget_get_screen (GTK_WIDGET (self->bvw)), gdata_link_get_uri (link), GDK_CURRENT_TIME, &error) == FALSE) { GtkWindow *window = totem_get_main_window (self->totem); totem_interface_error (_("Error Opening Video in Web Browser"), error->message, window); g_object_unref (window); g_error_free (error); } } g_list_foreach (paths, (GFunc) gtk_tree_path_free, NULL); g_list_free (paths); }