From 6acb4d00399e9cc036988f11b4c51759d433b723 Mon Sep 17 00:00:00 2001 From: France Julien Date: Tue, 6 Mar 2012 10:58:26 +0100 Subject: [PATCH 1/5] Add row_limit option to GetListItems and GetListChangesSinceToken queries. --- lib/activesp/list.rb | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/activesp/list.rb b/lib/activesp/list.rb index 000a08f..5861945 100644 --- a/lib/activesp/list.rb +++ b/lib/activesp/list.rb @@ -203,6 +203,7 @@ def create_folder!(parameters = {}) def changes_since_token(token, options = {}) options = options.dup no_preload = options.delete(:no_preload) + row_limit = options.delete(:row_limit).try(:to_s) options.empty? or raise ArgumentError, "unknown options #{options.keys.map { |k| k.inspect }.join(", ")}" if no_preload @@ -213,9 +214,9 @@ def changes_since_token(token, options = {}) view_fields = Builder::XmlMarkup.new.ViewFields end if token - result = call("Lists", "GetListItemChangesSinceToken", "listName" => @id, 'queryOptions' => '', 'changeToken' => token, 'viewFields' => view_fields) + result = call("Lists", "GetListItemChangesSinceToken", "listName" => @id, 'queryOptions' => '', 'changeToken' => token, 'viewFields' => view_fields, 'rowLimit' => row_limit) else - result = call("Lists", "GetListItemChangesSinceToken", "listName" => @id, 'queryOptions' => '', 'viewFields' => view_fields) + result = call("Lists", "GetListItemChangesSinceToken", "listName" => @id, 'queryOptions' => '', 'viewFields' => view_fields, 'rowLimit' => row_limit) end updates = [] result.xpath("//z:row", NS).each do |row| @@ -506,8 +507,10 @@ def permissions end cache :permissions, :dup => :always - def get_list_items(view_fields, query_options, query) - result = call("Lists", "GetListItems", { "listName" => @id, "viewFields" => view_fields, "queryOptions" => query_options }.merge(query)) + def get_list_items(view_fields, query_options, query, options = {}) + options = options.dup + row_limit = options.delete(:row_limit).try(:to_s) + result = call("Lists", "GetListItems", {"listName" => @id, "viewFields" => view_fields, "queryOptions" => query_options, "rowLimit" => row_limit}.merge(query)) result.xpath("//z:row", NS).each do |row| yield clean_item_attributes(row.attributes) end From e9e26019a90ad6277a9409e1373d5a6350330957 Mon Sep 17 00:00:00 2001 From: France Julien Date: Tue, 6 Mar 2012 11:19:33 +0100 Subject: [PATCH 2/5] Don't use 'try' method which come from rails. Sorry. --- lib/activesp/list.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/activesp/list.rb b/lib/activesp/list.rb index 5861945..6d55454 100644 --- a/lib/activesp/list.rb +++ b/lib/activesp/list.rb @@ -203,7 +203,7 @@ def create_folder!(parameters = {}) def changes_since_token(token, options = {}) options = options.dup no_preload = options.delete(:no_preload) - row_limit = options.delete(:row_limit).try(:to_s) + row_limit = (r_l = options.delete(:row_limit)) ? r_l.to_s : nil options.empty? or raise ArgumentError, "unknown options #{options.keys.map { |k| k.inspect }.join(", ")}" if no_preload @@ -509,7 +509,7 @@ def permissions def get_list_items(view_fields, query_options, query, options = {}) options = options.dup - row_limit = options.delete(:row_limit).try(:to_s) + row_limit = (r_l = options.delete(:row_limit)) ? r_l.to_s : nil result = call("Lists", "GetListItems", {"listName" => @id, "viewFields" => view_fields, "queryOptions" => query_options, "rowLimit" => row_limit}.merge(query)) result.xpath("//z:row", NS).each do |row| yield clean_item_attributes(row.attributes) From 8b59ded17daa957a5c96b92008bc52ac571da402 Mon Sep 17 00:00:00 2001 From: France Julien Date: Tue, 6 Mar 2012 14:00:33 +0100 Subject: [PATCH 3/5] :row_limit => nil give errors when the token is present. (Apparenty not when no token...) --- lib/activesp/list.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/activesp/list.rb b/lib/activesp/list.rb index 6d55454..7596e70 100644 --- a/lib/activesp/list.rb +++ b/lib/activesp/list.rb @@ -203,7 +203,7 @@ def create_folder!(parameters = {}) def changes_since_token(token, options = {}) options = options.dup no_preload = options.delete(:no_preload) - row_limit = (r_l = options.delete(:row_limit)) ? r_l.to_s : nil + row_limit = (r_l = options.delete(:row_limit)) ? {'rowLimit' => r_l.to_s} : {} options.empty? or raise ArgumentError, "unknown options #{options.keys.map { |k| k.inspect }.join(", ")}" if no_preload @@ -214,9 +214,9 @@ def changes_since_token(token, options = {}) view_fields = Builder::XmlMarkup.new.ViewFields end if token - result = call("Lists", "GetListItemChangesSinceToken", "listName" => @id, 'queryOptions' => '', 'changeToken' => token, 'viewFields' => view_fields, 'rowLimit' => row_limit) + result = call("Lists", "GetListItemChangesSinceToken", {"listName" => @id, 'queryOptions' => '', 'changeToken' => token, 'viewFields' => view_fields}.merge(ro w_limit)) else - result = call("Lists", "GetListItemChangesSinceToken", "listName" => @id, 'queryOptions' => '', 'viewFields' => view_fields, 'rowLimit' => row_limit) + result = call("Lists", "GetListItemChangesSinceToken", {"listName" => @id, 'queryOptions' => '', 'viewFields' => view_fields}.merge(row_limit)) end updates = [] result.xpath("//z:row", NS).each do |row| @@ -509,8 +509,8 @@ def permissions def get_list_items(view_fields, query_options, query, options = {}) options = options.dup - row_limit = (r_l = options.delete(:row_limit)) ? r_l.to_s : nil - result = call("Lists", "GetListItems", {"listName" => @id, "viewFields" => view_fields, "queryOptions" => query_options, "rowLimit" => row_limit}.merge(query)) + row_limit = (r_l = options.delete(:row_limit)) ? {'rowLimit' => r_l.to_s} : {} + result = call("Lists", "GetListItems", {"listName" => @id, "viewFields" => view_fields, "queryOptions" => query_options, "rowLimit" => row_limit}.merge(query).merge(row_limit)) result.xpath("//z:row", NS).each do |row| yield clean_item_attributes(row.attributes) end From 144e35519a2ee04083b2f0caf68c87c64d554541 Mon Sep 17 00:00:00 2001 From: France Julien Date: Wed, 11 Apr 2012 09:44:31 +0200 Subject: [PATCH 4/5] row_limit instead of 'ro w_limit' (stange that I didn't catch this error before.) --- lib/activesp/list.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/activesp/list.rb b/lib/activesp/list.rb index 7596e70..0d7ac7c 100644 --- a/lib/activesp/list.rb +++ b/lib/activesp/list.rb @@ -214,7 +214,7 @@ def changes_since_token(token, options = {}) view_fields = Builder::XmlMarkup.new.ViewFields end if token - result = call("Lists", "GetListItemChangesSinceToken", {"listName" => @id, 'queryOptions' => '', 'changeToken' => token, 'viewFields' => view_fields}.merge(ro w_limit)) + result = call("Lists", "GetListItemChangesSinceToken", {"listName" => @id, 'queryOptions' => '', 'changeToken' => token, 'viewFields' => view_fields}.merge(row_limit)) else result = call("Lists", "GetListItemChangesSinceToken", {"listName" => @id, 'queryOptions' => '', 'viewFields' => view_fields}.merge(row_limit)) end From 2a431920862cebcfb4fe3d848480ffdd19c8d3dc Mon Sep 17 00:00:00 2001 From: France Julien Date: Mon, 19 Nov 2012 17:40:44 +0100 Subject: [PATCH 5/5] RowLimit Bux fixed. --- lib/activesp/list.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/activesp/list.rb b/lib/activesp/list.rb index 0d7ac7c..ac805de 100644 --- a/lib/activesp/list.rb +++ b/lib/activesp/list.rb @@ -510,7 +510,7 @@ def permissions def get_list_items(view_fields, query_options, query, options = {}) options = options.dup row_limit = (r_l = options.delete(:row_limit)) ? {'rowLimit' => r_l.to_s} : {} - result = call("Lists", "GetListItems", {"listName" => @id, "viewFields" => view_fields, "queryOptions" => query_options, "rowLimit" => row_limit}.merge(query).merge(row_limit)) + result = call("Lists", "GetListItems", {"listName" => @id, "viewFields" => view_fields, "queryOptions" => query_options}.merge(query).merge(row_limit)) result.xpath("//z:row", NS).each do |row| yield clean_item_attributes(row.attributes) end