[libgdata/wip/rishi/drive: 2/2] documents: Add support for paging through Drive v2 file lists
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgdata/wip/rishi/drive: 2/2] documents: Add support for paging through Drive v2 file lists
- Date: Fri, 24 Apr 2015 08:32:35 +0000 (UTC)
commit bff6a2a7e44beb5371bde3a691f3005a964c645f
Author: Debarshi Ray <debarshir gnome org>
Date: Thu Apr 23 14:47:30 2015 +0200
documents: Add support for paging through Drive v2 file lists
The server does not offer a ‘previous’ URI.
https://bugzilla.gnome.org/show_bug.cgi?id=684920
gdata/services/documents/gdata-documents-feed.c | 17 +++++++++++++++--
gdata/services/documents/gdata-documents-query.c | 8 ++++++++
2 files changed, 23 insertions(+), 2 deletions(-)
---
diff --git a/gdata/services/documents/gdata-documents-feed.c b/gdata/services/documents/gdata-documents-feed.c
index 92b461e..2f7324e 100644
--- a/gdata/services/documents/gdata-documents-feed.c
+++ b/gdata/services/documents/gdata-documents-feed.c
@@ -123,10 +123,23 @@ get_kind_and_mime_type (JsonReader *reader, gchar **out_kind, gchar **out_mime_t
static gboolean
parse_json (GDataParsable *parsable, JsonReader *reader, gpointer user_data, GError **error)
{
+ gboolean success = TRUE;
+ gchar *next_uri = NULL;
+
/* JSON format: https://developers.google.com/drive/v2/reference/files/list */
- if (g_strcmp0 (json_reader_get_member_name (reader), "items") == 0) {
- gboolean success = TRUE;
+ if (gdata_parser_string_from_json_member (reader, "nextLink", P_DEFAULT, &next_uri, &success, error)
== TRUE) {
+ if (success && next_uri != NULL && next_uri[0] != '\0') {
+ GDataLink *_link;
+
+ _link = gdata_link_new (next_uri, "http://www.iana.org/assignments/relation/next");
+ _gdata_feed_add_link (GDATA_FEED (parsable), _link);
+ g_object_unref (_link);
+ }
+
+ g_free (next_uri);
+ return success;
+ } else if (g_strcmp0 (json_reader_get_member_name (reader), "items") == 0) {
guint i, elements;
if (json_reader_is_array (reader) == FALSE) {
diff --git a/gdata/services/documents/gdata-documents-query.c
b/gdata/services/documents/gdata-documents-query.c
index 76f4dd2..d91084c 100644
--- a/gdata/services/documents/gdata-documents-query.c
+++ b/gdata/services/documents/gdata-documents-query.c
@@ -298,6 +298,7 @@ static void
get_query_uri (GDataQuery *self, const gchar *feed_uri, GString *query_uri, gboolean *params_started)
{
GDataDocumentsQueryPrivate *priv = GDATA_DOCUMENTS_QUERY (self)->priv;
+ guint max_results;
#define APPEND_SEP g_string_append_c (query_uri, (*params_started == FALSE) ? '?' : '&');
*params_started = TRUE;
@@ -353,6 +354,13 @@ get_query_uri (GDataQuery *self, const gchar *feed_uri, GString *query_uri, gboo
g_string_append (query_uri, "&showfolders=true");
else
g_string_append (query_uri, "&showfolders=false");
+
+ max_results = gdata_query_get_max_results (self);
+ if (max_results > 0) {
+ APPEND_SEP
+ max_results = max_results > 1000 ? 1000 : max_results;
+ g_string_append_printf (query_uri, "maxResults=%u", max_results);
+ }
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]