void flickr_account_load_extra_data (FlickrAccount *self, DomElement *element) { DomElement *node; flickr_account_set_is_pro (self, dom_element_get_attribute (element, "ispro")); for (node = element->first_child; node; node = node->next_sibling) { if (g_strcmp0 (node->tag_name, "accountname") == 0) { flickr_account_set_accountname (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "bandwidth") == 0) { flickr_account_set_max_bandwidth (self, dom_element_get_attribute (node, "maxbytes")); flickr_account_set_used_bandwidth (self, dom_element_get_attribute (node, "usedbytes")); } else if (g_strcmp0 (node->tag_name, "filesize") == 0) { flickr_account_set_max_filesize (self, dom_element_get_attribute (node, "maxbytes")); } else if (g_strcmp0 (node->tag_name, "videosize") == 0) { flickr_account_set_max_videosize (self, dom_element_get_attribute (node, "maxbytes")); } else if (g_strcmp0 (node->tag_name, "sets") == 0) { flickr_account_set_n_sets (self, dom_element_get_attribute (node, "created")); } else if (g_strcmp0 (node->tag_name, "videos") == 0) { flickr_account_set_n_videos (self, dom_element_get_attribute (node, "uploaded")); } } }
static void facebook_user_load_from_element (DomDomizable *base, DomElement *element) { FacebookUser *self; DomElement *node; self = FACEBOOK_USER (base); for (node = element->first_child; node; node = node->next_sibling) { if (g_strcmp0 (node->tag_name, "uid") == 0) { _g_strset (&self->id, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "name") == 0) { _g_strset (&self->username, dom_element_get_inner_text (node)); } } }
static void upload_photo_ready_cb (SoupSession *session, SoupMessage *msg, gpointer user_data) { FacebookService *self = user_data; SoupBuffer *body; DomDocument *doc = NULL; GError *error = NULL; GthFileData *file_data; if (msg->status_code != 200) { GError *error; error = g_error_new_literal (SOUP_HTTP_ERROR, msg->status_code, soup_status_get_phrase (msg->status_code)); upload_photos_done (self, error); g_error_free (error); return; } body = soup_message_body_flatten (msg->response_body); if (facebook_utils_parse_response (body, &doc, &error)) { DomElement *node; /* save the photo id */ for (node = DOM_ELEMENT (doc)->first_child; node; node = node->next_sibling) { if (g_strcmp0 (node->tag_name, "pid") == 0) { const char *id; id = dom_element_get_inner_text (node); self->priv->post_photos->ids = g_list_prepend (self->priv->post_photos->ids, g_strdup (id)); } } g_object_unref (doc); } else { soup_buffer_free (body); upload_photos_done (self, error); return; } soup_buffer_free (body); file_data = self->priv->post_photos->current->data; self->priv->post_photos->uploaded_size += g_file_info_get_size (file_data->info); self->priv->post_photos->current = self->priv->post_photos->current->next; facebook_service_upload_current_file (self); }
static void get_logged_in_user_ready_cb (SoupSession *session, SoupMessage *msg, gpointer user_data) { FacebookService *self = user_data; GSimpleAsyncResult *result; SoupBuffer *body; DomDocument *doc = NULL; GError *error = NULL; result = facebook_connection_get_result (self->priv->conn); if (msg->status_code != 200) { g_simple_async_result_set_error (result, SOUP_HTTP_ERROR, msg->status_code, "%s", soup_status_get_phrase (msg->status_code)); g_simple_async_result_complete_in_idle (result); return; } body = soup_message_body_flatten (msg->response_body); if (facebook_utils_parse_response (body, &doc, &error)) { DomElement *root; char *uid = NULL; root = DOM_ELEMENT (doc)->first_child; if (g_strcmp0 (root->tag_name, "users_getLoggedInUser_response") == 0) uid = g_strdup (dom_element_get_inner_text (root)); if (uid == NULL) { error = g_error_new_literal (FACEBOOK_CONNECTION_ERROR, 0, _("Unknown error")); g_simple_async_result_set_from_error (result, error); } else g_simple_async_result_set_op_res_gpointer (result, uid, g_free); g_object_unref (doc); } else g_simple_async_result_set_from_error (result, error); g_simple_async_result_complete_in_idle (result); soup_buffer_free (body); }
static void picasa_web_album_load_from_element (DomDomizable *base, DomElement *element) { PicasaWebAlbum *self; DomElement *node; self = PICASA_WEB_ALBUM (base); picasa_web_album_set_id (self, NULL); picasa_web_album_set_title (self, NULL); picasa_web_album_set_summary (self, NULL); picasa_web_album_set_alternate_url (self, NULL); picasa_web_album_set_edit_url (self, NULL); picasa_web_album_set_access (self, NULL); self->n_photos = 0; self->n_photos_remaining = 0; self->used_bytes = 0; picasa_web_album_set_etag (self, dom_element_get_attribute (element, "gd:etag")); for (node = element->first_child; node; node = node->next_sibling) { if (g_strcmp0 (node->tag_name, "gphoto:id") == 0) { picasa_web_album_set_id (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "title") == 0) { picasa_web_album_set_title (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "summary") == 0) { picasa_web_album_set_summary (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "gphoto:location") == 0) { picasa_web_album_set_location (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "link") == 0) { if (g_strcmp0 (dom_element_get_attribute (node, "rel"), "edit") == 0) picasa_web_album_set_edit_url (self, dom_element_get_attribute (node, "href")); else if (g_strcmp0 (dom_element_get_attribute (node, "rel"), "alternate") == 0) picasa_web_album_set_alternate_url (self, dom_element_get_attribute (node, "href")); } else if (g_strcmp0 (node->tag_name, "gphoto:access") == 0) { picasa_web_album_set_access (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "gphoto:numphotos") == 0) { picasa_web_album_set_n_photos (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "gphoto:numphotosremaining") == 0) { picasa_web_album_set_n_photos_remaining (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "gphoto:bytesUsed") == 0) { picasa_web_album_set_used_bytes (self, dom_element_get_inner_text (node)); } else if (g_strcmp0 (node->tag_name, "media:group") == 0) { DomElement *child; for (child = node->first_child; child; child = child->next_sibling) { if (g_strcmp0 (child->tag_name, "media:keywords") == 0) { picasa_web_album_set_keywords (self, dom_element_get_inner_text (child)); break; } } } } }
static void list_albums_ready_cb (SoupSession *session, SoupMessage *msg, gpointer user_data) { PicasaWebService *self = user_data; GSimpleAsyncResult *result; SoupBuffer *body; DomDocument *doc; GError *error = NULL; result = _web_service_get_result (WEB_SERVICE (self)); if (msg->status_code != 200) { g_simple_async_result_set_error (result, SOUP_HTTP_ERROR, msg->status_code, "%s", soup_status_get_phrase (msg->status_code)); g_simple_async_result_complete_in_idle (result); return; } body = soup_message_body_flatten (msg->response_body); doc = dom_document_new (); if (dom_document_load (doc, body->data, body->length, &error)) { DomElement *feed_node; GList *albums = NULL; feed_node = DOM_ELEMENT (doc)->first_child; while ((feed_node != NULL) && g_strcmp0 (feed_node->tag_name, "feed") != 0) feed_node = feed_node->next_sibling; if (feed_node != NULL) { DomElement *node; PicasaWebAlbum *album; album = NULL; for (node = feed_node->first_child; node != NULL; node = node->next_sibling) { if (g_strcmp0 (node->tag_name, "entry") == 0) { /* read the album data */ if (album != NULL) albums = g_list_prepend (albums, album); album = picasa_web_album_new (); dom_domizable_load_from_element (DOM_DOMIZABLE (album), node); } else if (g_strcmp0 (node->tag_name, "gphoto:quotalimit") == 0) { self->priv->quota_limit = g_ascii_strtoull (dom_element_get_inner_text (node), NULL, 10); } else if (g_strcmp0 (node->tag_name, "gphoto:quotacurrent") == 0) { self->priv->quota_used = g_ascii_strtoull (dom_element_get_inner_text (node), NULL, 10); } } if (album != NULL) albums = g_list_prepend (albums, album); } albums = g_list_reverse (albums); g_simple_async_result_set_op_res_gpointer (result, albums, (GDestroyNotify) _g_object_list_unref); } else { g_simple_async_result_set_from_error (result, error); g_error_free (error); } g_simple_async_result_complete_in_idle (result); g_object_unref (doc); soup_buffer_free (body); }
void ss__gth_catalog_read_from_doc (GthCatalog *catalog, DomElement *root) { DomElement *node; for (node = root->first_child; node; node = node->next_sibling) { DomElement *child; if (g_strcmp0 (node->tag_name, "slideshow") != 0) continue; g_value_hash_set_boolean (catalog->attributes, "slideshow::personalize", g_strcmp0 (dom_element_get_attribute (node, "personalize"), "true") == 0); g_value_hash_set_boolean (catalog->attributes, "slideshow::automatic", g_strcmp0 (dom_element_get_attribute (node, "automatic"), "true") == 0); g_value_hash_set_boolean (catalog->attributes, "slideshow::wrap-around", g_strcmp0 (dom_element_get_attribute (node, "wrap-around"), "true") == 0); g_value_hash_set_boolean (catalog->attributes, "slideshow::random-order", g_strcmp0 (dom_element_get_attribute (node, "random-order"), "true") == 0); for (child = node->first_child; child; child = child->next_sibling) { if (g_strcmp0 (child->tag_name, "delay") == 0) { int delay; sscanf (dom_element_get_inner_text (child), "%d", &delay); g_value_hash_set_int (catalog->attributes, "slideshow::delay", delay); } else if (g_strcmp0 (child->tag_name, "transition") == 0) { g_value_hash_set_string (catalog->attributes, "slideshow::transition", dom_element_get_inner_text (child)); } else if (g_strcmp0 (child->tag_name, "playlist") == 0) { DomElement *file; GList *audio_files; audio_files = NULL; for (file = child->first_child; file; file = file->next_sibling) { if (g_strcmp0 (file->tag_name, "file") == 0) audio_files = g_list_prepend (audio_files, g_strdup (dom_element_get_attribute (file, "uri"))); } audio_files = g_list_reverse (audio_files); if (audio_files != NULL) { char **audio_files_v; audio_files_v = _g_string_list_to_strv (audio_files); g_value_hash_set_stringv (catalog->attributes, "slideshow::playlist", audio_files_v); g_strfreev (audio_files_v); } else g_value_hash_unset (catalog->attributes, "slideshow::playlist"); _g_string_list_free (audio_files); } } } }