[libgdata/wip/rishi/drive: 1/8] documents: Split out the code to add a content type to an entry



commit a9a2c4be51ecb4c665a349401097ff88636557bc
Author: Debarshi Ray <debarshir gnome org>
Date:   Wed Sep 21 17:27:18 2016 +0200

    documents: Split out the code to add a content type to an entry
    
    https://bugzilla.gnome.org/show_bug.cgi?id=684920

 gdata/services/documents/gdata-documents-entry.c  |   10 +-------
 gdata/services/documents/gdata-documents-folder.c |   13 +++--------
 gdata/services/documents/gdata-documents-utils.c  |   23 +++++++++++++++++++++
 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 e54e5df..32f51ef 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 7ae7c4f..1ae9bfe 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 046b3ec..2f8cb8b 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 a2a4b99..2e11bb8 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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]