char * gth_tags_file_to_data (GthTagsFile *tags, gsize *len, GError **data_error) { DomDocument *doc; DomElement *root; char *data; GList *scan; doc = dom_document_new (); root = dom_document_create_element (doc, "tags", "version", FILE_FORMAT, NULL); dom_element_append_child (DOM_ELEMENT (doc), root); for (scan = tags->items; scan; scan = scan->next) { const char *tag_value = scan->data; dom_element_append_child (root, dom_document_create_element (doc, "tag", "value", tag_value, NULL)); } data = dom_document_dump (doc, len); g_object_unref (doc); return data; }
void ss__gth_catalog_write_to_doc (GthCatalog *catalog, DomDocument *doc, DomElement *root) { DomElement *slideshow; if (! g_value_hash_is_set (catalog->attributes, "slideshow::personalize")) return; slideshow = dom_document_create_element (doc, "slideshow", "personalize", (g_value_hash_get_boolean_or_default (catalog->attributes, "slideshow::personalize", FALSE) ? "true" : "false"), "automatic", (g_value_hash_get_boolean_or_default (catalog->attributes, "slideshow::automatic", FALSE) ? "true" : "false"), "wrap-around", (g_value_hash_get_boolean_or_default (catalog->attributes, "slideshow::wrap-around", FALSE) ? "true" : "false"), "random-order", (g_value_hash_get_boolean_or_default (catalog->attributes, "slideshow::random-order", FALSE) ? "true" : "false"), NULL); dom_element_append_child (root, slideshow); if (g_value_hash_is_set (catalog->attributes, "slideshow::delay")) { char *delay; delay = g_strdup_printf ("%d", g_value_hash_get_int (catalog->attributes, "slideshow::delay")); dom_element_append_child (slideshow, dom_document_create_element_with_text (doc, delay, "delay", NULL)); g_free (delay); } if (g_value_hash_is_set (catalog->attributes, "slideshow::transition")) dom_element_append_child (slideshow, dom_document_create_element_with_text (doc, g_value_hash_get_string (catalog->attributes, "slideshow::transition"), "transition", NULL)); if (g_value_hash_is_set (catalog->attributes, "slideshow::playlist")) { char **playlist_files; playlist_files = g_value_hash_get_stringv (catalog->attributes, "slideshow::playlist"); if (playlist_files[0] != NULL) { DomElement *playlist; int i; playlist = dom_document_create_element (doc, "playlist", NULL); dom_element_append_child (slideshow, playlist); for (i = 0; playlist_files[i] != NULL; i++) dom_element_append_child (playlist, dom_document_create_element (doc, "file", "uri", playlist_files[i], NULL)); } } }
static DomElement* picasa_web_album_create_element (DomDomizable *base, DomDocument *doc) { PicasaWebAlbum *self; DomElement *element; char *value; self = PICASA_WEB_ALBUM (base); element = dom_document_create_element (doc, "entry", "xmlns", "http://www.w3.org/2005/Atom", "xmlns:media", "http://search.yahoo.com/mrss/", "xmlns:gphoto", "http://schemas.google.com/photos/2007", NULL); if (self->id != NULL) dom_element_append_child (element, dom_document_create_element_with_text (doc, self->id, "id", NULL)); if (self->title != NULL) dom_element_append_child (element, dom_document_create_element_with_text (doc, self->title, "title", "type", "text", NULL)); if (self->summary != NULL) dom_element_append_child (element, dom_document_create_element_with_text (doc, self->summary, "summary", "type", "text", NULL)); if (self->location != NULL) dom_element_append_child (element, dom_document_create_element_with_text (doc, self->location, "gphoto:location", NULL)); switch (self->access) { case PICASA_WEB_ACCESS_ALL: value = "all"; break; case PICASA_WEB_ACCESS_PRIVATE: default: value = "private"; break; case PICASA_WEB_ACCESS_PUBLIC: value = "public"; break; case PICASA_WEB_ACCESS_VISIBLE: value = "visible"; break; } dom_element_append_child (element, dom_document_create_element_with_text (doc, value, "gphoto:access", NULL)); dom_element_append_child (element, dom_document_create_element (doc, "category", "scheme", "http://schemas.google.com/g/2005#kind", "term", "http://schemas.google.com/photos/2007#album", NULL)); return element; }
static DomElement * gth_search_create_root (GthCatalog *catalog, DomDocument *doc) { return dom_document_create_element (doc, "search", "version", SEARCH_FORMAT, NULL); }
static hubbub_error create_element(void *parser, const hubbub_tag *tag, void **result) { dom_hubbub_parser *dom_parser = (dom_hubbub_parser *) parser; dom_exception err; dom_string *name; struct dom_element *element = NULL; hubbub_error herr; *result = NULL; err = dom_string_create_interned(tag->name.ptr, tag->name.len, &name); if (err != DOM_NO_ERR) { dom_parser->msg(DOM_MSG_CRITICAL, dom_parser->mctx, "Can't create element name"); goto fail; } if (tag->ns == HUBBUB_NS_NULL) { err = dom_document_create_element(dom_parser->doc, name, &element); if (err != DOM_NO_ERR) { dom_parser->msg(DOM_MSG_CRITICAL, dom_parser->mctx, "Can't create the DOM element"); goto clean1; } } else { err = dom_document_create_element_ns(dom_parser->doc, dom_namespaces[tag->ns], name, &element); if (err != DOM_NO_ERR) { dom_parser->msg(DOM_MSG_CRITICAL, dom_parser->mctx, "Can't create the DOM element"); goto clean1; } } if (element != NULL && tag->n_attributes > 0) { herr = add_attributes(parser, element, tag->attributes, tag->n_attributes); if (herr != HUBBUB_OK) goto clean1; } *result = element; clean1: dom_string_unref(name); fail: if (*result == NULL) return HUBBUB_UNKNOWN; else return HUBBUB_OK; }
static DomElement* photobucket_album_create_element (DomDomizable *base, DomDocument *doc) { PhotobucketAlbum *self; DomElement *element; self = PHOTOBUCKET_ALBUM (base); element = dom_document_create_element (doc, "photoset", NULL); if (self->name != NULL) dom_element_append_child (element, dom_document_create_element_with_text (doc, self->name, "name", NULL)); return element; }
static DomElement* facebook_user_create_element (DomDomizable *base, DomDocument *doc) { FacebookUser *self; DomElement *element; self = FACEBOOK_USER (base); element = dom_document_create_element (doc, "user", NULL); if (self->id != NULL) dom_element_set_attribute (element, "id", self->id); if (self->username != NULL) dom_element_set_attribute (element, "name", self->username); return element; }
static void _gth_search_write_to_doc (GthSearch *self, DomDocument *doc, DomElement *root) { char *uri; uri = g_file_get_uri (self->priv->folder); dom_element_append_child (root, dom_document_create_element (doc, "folder", "uri", uri, "recursive", (self->priv->recursive ? "true" : "false"), NULL)); g_free (uri); dom_element_append_child (root, dom_domizable_create_element (DOM_DOMIZABLE (self->priv->test), doc)); }
void facebook_accounts_save_to_file (GList *accounts, FacebookAccount *default_account) { DomDocument *doc; DomElement *root; GList *scan; char *buffer; gsize len; char *filename; GFile *file; doc = dom_document_new (); root = dom_document_create_element (doc, "accounts", NULL); dom_element_append_child (DOM_ELEMENT (doc), root); for (scan = accounts; scan; scan = scan->next) { FacebookAccount *account = scan->data; DomElement *node; if ((default_account != NULL) && g_strcmp0 (account->username, default_account->username) == 0) account->is_default = TRUE; else account->is_default = FALSE; node = dom_domizable_create_element (DOM_DOMIZABLE (account), doc); dom_element_append_child (root, node); } gth_user_dir_make_dir_for_file (GTH_DIR_CONFIG, GTHUMB_DIR, "accounts", "facebook.xml", NULL); filename = gth_user_dir_get_file (GTH_DIR_CONFIG, GTHUMB_DIR, "accounts", "facebook.xml", NULL); file = g_file_new_for_path (filename); buffer = dom_document_dump (doc, &len); g_write_file (file, FALSE, G_FILE_CREATE_PRIVATE | G_FILE_CREATE_REPLACE_DESTINATION, buffer, len, NULL, NULL); g_free (buffer); g_object_unref (file); g_free (filename); g_object_unref (doc); }
static DomElement* facebook_photo_create_element (DomDomizable *base, DomDocument *doc) { FacebookPhoto *self; DomElement *element; self = FACEBOOK_PHOTO (base); element = dom_document_create_element (doc, "photo", NULL); if (self->id != NULL) dom_element_set_attribute (element, "id", self->id); if (self->secret != NULL) dom_element_set_attribute (element, "secret", self->secret); if (self->server != NULL) dom_element_set_attribute (element, "server", self->server); if (self->title != NULL) dom_element_set_attribute (element, "title", self->title); if (self->is_primary) dom_element_set_attribute (element, "isprimary", "1"); return element; }
static DomElement* gth_script_real_create_element (DomDomizable *base, DomDocument *doc) { GthScript *self; DomElement *element; g_return_val_if_fail (DOM_IS_DOCUMENT (doc), NULL); self = GTH_SCRIPT (base); element = dom_document_create_element (doc, "script", "id", self->priv->id, "display-name", self->priv->display_name, "command", self->priv->command, "shell-script", (self->priv->shell_script ? "true" : "false"), "for-each-file", (self->priv->for_each_file ? "true" : "false"), "wait-command", (self->priv->wait_command ? "true" : "false"), "shortcut", gdk_keyval_name (self->priv->shortcut), NULL); if (! self->priv->visible) dom_element_set_attribute (element, "display", "none"); return element; }
static void post_photo_file_buffer_ready_cb (void **buffer, gsize count, GError *error, gpointer user_data) { PicasaWebService *self = user_data; OAuthAccount *account; GthFileData *file_data; SoupMultipart *multipart; const char *filename; char *value; GObject *metadata; DomDocument *doc; DomElement *entry; char *entry_buffer; gsize entry_len; SoupMessageHeaders *headers; SoupBuffer *body; void *resized_buffer; gsize resized_count; char *url; SoupMessage *msg; if (error != NULL) { post_photos_done (self, error); return; } account = web_service_get_current_account (WEB_SERVICE (self)); file_data = self->priv->post_photos->current->data; multipart = soup_multipart_new ("multipart/related"); /* the metadata part */ doc = dom_document_new (); entry = dom_document_create_element (doc, "entry", "xmlns", "http://www.w3.org/2005/Atom", "xmlns:gphoto", "http://schemas.google.com/photos/2007", "xmlns:media", "http://search.yahoo.com/mrss/", NULL); filename = g_file_info_get_display_name (file_data->info); dom_element_append_child (entry, dom_document_create_element_with_text (doc, filename, "title", NULL)); value = gth_file_data_get_attribute_as_string (file_data, "general::description"); if (value == NULL) value = gth_file_data_get_attribute_as_string (file_data, "general::title"); dom_element_append_child (entry, dom_document_create_element_with_text (doc, value, "summary", NULL)); value = gth_file_data_get_attribute_as_string (file_data, "general::location"); if (value != NULL) dom_element_append_child (entry, dom_document_create_element_with_text (doc, value, "gphoto:location", NULL)); metadata = g_file_info_get_attribute_object (file_data->info, "general::tags"); if (metadata != NULL) value = gth_string_list_join (GTH_STRING_LIST (gth_metadata_get_string_list (GTH_METADATA (metadata))), ", "); if (value != NULL) { DomElement *group; group = dom_document_create_element (doc, "media:group", NULL); dom_element_append_child (group, dom_document_create_element_with_text (doc, value, "media:keywords", NULL)); dom_element_append_child (entry, group); g_free (value); } dom_element_append_child (entry, dom_document_create_element (doc, "category", "scheme", "http://schemas.google.com/g/2005#kind", "term", "http://schemas.google.com/photos/2007#photo", NULL)); dom_element_append_child (DOM_ELEMENT (doc), entry); entry_buffer = dom_document_dump (doc, &entry_len); headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_REQUEST); soup_message_headers_append (headers, "Content-Type", "application/atom+xml"); body = soup_buffer_new (SOUP_MEMORY_TAKE, entry_buffer, entry_len); soup_multipart_append_part (multipart, headers, body); soup_buffer_free (body); soup_message_headers_free (headers); g_object_unref (doc); /* the file part */ if (_g_buffer_resize_image (*buffer, count, file_data, self->priv->post_photos->max_width, self->priv->post_photos->max_height, &resized_buffer, &resized_count, self->priv->post_photos->cancellable, &error)) { body = soup_buffer_new (SOUP_MEMORY_TAKE, resized_buffer, resized_count); } else if (error == NULL) { body = soup_buffer_new (SOUP_MEMORY_TEMPORARY, *buffer, count); } else { soup_multipart_free (multipart); post_photos_done (self, error); return; } soup_multipart_append_form_file (multipart, "file", NULL, gth_file_data_get_mime_type (file_data), body); soup_buffer_free (body); /* send the file */ self->priv->post_photos->wrote_body_data_size = 0; url = g_strconcat ("https://picasaweb.google.com/data/feed/api/user/", account->id, "/albumid/", self->priv->post_photos->album->id, NULL); msg = soup_form_request_new_from_multipart (url, multipart); g_signal_connect (msg, "wrote-body-data", (GCallback) upload_photo_wrote_body_data_cb, self); _picasa_web_service_add_headers (self, msg); _web_service_send_message (WEB_SERVICE (self), msg, self->priv->post_photos->cancellable, self->priv->post_photos->callback, self->priv->post_photos->user_data, picasa_web_service_post_photos, post_photo_ready_cb, self); g_free (url); soup_multipart_free (multipart); }