diff options
author | Debarshi Ray <debarshir@gnome.org> | 2016-09-21 17:27:18 +0200 |
---|---|---|
committer | Debarshi Ray <debarshir@gnome.org> | 2016-09-21 19:50:05 +0200 |
commit | a9a2c4be51ecb4c665a349401097ff88636557bc (patch) | |
tree | cf8e01e3b7b843fbfb81b9c43b57dbbb28a3bd96 | |
parent | 6a4e30e686e43d4f3ceaf58d15f551701e4baee0 (diff) | |
download | libgdata-a9a2c4be51ecb4c665a349401097ff88636557bc.tar.gz |
documents: Split out the code to add a content type to an entry
https://bugzilla.gnome.org/show_bug.cgi?id=684920
-rw-r--r-- | gdata/services/documents/gdata-documents-entry.c | 10 | ||||
-rw-r--r-- | gdata/services/documents/gdata-documents-folder.c | 13 | ||||
-rw-r--r-- | gdata/services/documents/gdata-documents-utils.c | 23 | ||||
-rw-r--r-- | gdata/services/documents/gdata-documents-utils.h | 2 |
4 files changed, 31 insertions, 17 deletions
diff --git a/gdata/services/documents/gdata-documents-entry.c b/gdata/services/documents/gdata-documents-entry.c index e54e5df1..32f51efc 100644 --- a/gdata/services/documents/gdata-documents-entry.c +++ b/gdata/services/documents/gdata-documents-entry.c @@ -587,14 +587,8 @@ parse_json (GDataParsable *parsable, JsonReader *reader, gpointer user_data, GEr g_free (alternate_uri); return success; } else if (gdata_parser_string_from_json_member (reader, "mimeType", P_DEFAULT, &mime_type, &success, error) == TRUE) { - if (success && mime_type != NULL && mime_type[0] != '\0') { - GDataEntryClass *klass = GDATA_ENTRY_GET_CLASS (parsable); - - category = gdata_category_new (klass->kind_term, "http://schemas.google.com/g/2005#kind", mime_type); - gdata_entry_add_category (GDATA_ENTRY (parsable), category); - g_object_unref (category); - } - + if (success) + gdata_documents_utils_add_content_type (GDATA_DOCUMENTS_ENTRY (parsable), mime_type); g_free (mime_type); return success; } else if (gdata_parser_int64_time_from_json_member (reader, "lastViewedByMeDate", P_DEFAULT, &(priv->last_viewed), &success, error) == TRUE || diff --git a/gdata/services/documents/gdata-documents-folder.c b/gdata/services/documents/gdata-documents-folder.c index 7ae7c4fd..1ae9bfe1 100644 --- a/gdata/services/documents/gdata-documents-folder.c +++ b/gdata/services/documents/gdata-documents-folder.c @@ -3,7 +3,7 @@ * GData Client * Copyright (C) Thibault Saunier 2009 <saunierthibault@gmail.com> * Copyright (C) Philip Withnall 2010 <philip@tecnocode.co.uk> - * Copyright (C) Red Hat, Inc. 2015 + * Copyright (C) Red Hat, Inc. 2015, 2016 * * GData Client is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -85,6 +85,7 @@ #include <string.h> #include "gdata-documents-folder.h" +#include "gdata-documents-utils.h" #include "gdata-parser.h" #include "gdata-types.h" #include "gdata-private.h" @@ -114,14 +115,8 @@ gdata_documents_folder_constructed (GObject *object) { G_OBJECT_CLASS (gdata_documents_folder_parent_class)->constructed (object); - if (!_gdata_parsable_is_constructed_from_xml (GDATA_PARSABLE (object))) { - GDataCategory *category; - GDataEntryClass *klass = GDATA_ENTRY_GET_CLASS (object); - - category = gdata_category_new (klass->kind_term, "http://schemas.google.com/g/2005#kind", "application/vnd.google-apps.folder"); - gdata_entry_add_category (GDATA_ENTRY (object), category); - g_object_unref (category); - } + if (!_gdata_parsable_is_constructed_from_xml (GDATA_PARSABLE (object))) + gdata_documents_utils_add_content_type (GDATA_DOCUMENTS_ENTRY (object), "application/vnd.google-apps.folder"); } /** diff --git a/gdata/services/documents/gdata-documents-utils.c b/gdata/services/documents/gdata-documents-utils.c index 046b3ec7..2f8cb8b0 100644 --- a/gdata/services/documents/gdata-documents-utils.c +++ b/gdata/services/documents/gdata-documents-utils.c @@ -26,6 +26,29 @@ #include "gdata-documents-utils.h" /* + * gdata_documents_utils_add_content_type: + * @entry: a #GDataDocumentsEntry + * @content_type: the new entry content-type + * + * Adds a #GDataCategory representing @content_type to @entry. + * + * Since: UNRELEASED + */ +void +gdata_documents_utils_add_content_type (GDataDocumentsEntry *entry, const gchar *content_type) +{ + GDataCategory *category; + GDataEntryClass *klass = GDATA_ENTRY_GET_CLASS (entry); + + if (content_type == NULL || content_type[0] == '\0') + return; + + category = gdata_category_new (klass->kind_term, "http://schemas.google.com/g/2005#kind", content_type); + gdata_entry_add_category (GDATA_ENTRY (entry), category); + g_object_unref (category); +} + +/* * gdata_documents_utils_get_type_from_content_type: * @content_type: the content type * diff --git a/gdata/services/documents/gdata-documents-utils.h b/gdata/services/documents/gdata-documents-utils.h index a2a4b99e..2e11bb8b 100644 --- a/gdata/services/documents/gdata-documents-utils.h +++ b/gdata/services/documents/gdata-documents-utils.h @@ -30,6 +30,8 @@ G_BEGIN_DECLS /* HACK: Used to convert GDataLink:uri to ID and vice-versa. */ #define GDATA_DOCUMENTS_URI_PREFIX "https://www.googleapis.com/drive/v2/files/" +G_GNUC_INTERNAL void gdata_documents_utils_add_content_type (GDataDocumentsEntry *entry, const gchar *content_type); + G_GNUC_INTERNAL GType gdata_documents_utils_get_type_from_content_type (const gchar *content_type); G_GNUC_INTERNAL const gchar *gdata_documents_utils_get_content_type (GDataDocumentsEntry *entry); |