From 29120b06a19a69bc510735f0b81e8cd588a52f15 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 10:41:13 -0400 Subject: [PATCH 1/3] fetch is now done by the downloader --- lib/external_service_new/zendesk_dispatcher.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external_service_new/zendesk_dispatcher.rb b/lib/external_service_new/zendesk_dispatcher.rb index 6ac636d..f8ebea0 100644 --- a/lib/external_service_new/zendesk_dispatcher.rb +++ b/lib/external_service_new/zendesk_dispatcher.rb @@ -21,7 +21,7 @@ def initialize(account_identifiers: nil, credential_details:, sleep_time_seconds def dispatch(method, path) super() do - @client.search(method => path).fetch() + @client.search(method => path) end end end From cb0bbb955b54f65fbbc0123403c3a4a09deeee0a Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 10:44:06 -0400 Subject: [PATCH 2/3] the downloader can now deal with paginated response --- lib/external_service_new/zendesk_downloader.rb | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/external_service_new/zendesk_downloader.rb b/lib/external_service_new/zendesk_downloader.rb index 62d9af2..8308fa8 100644 --- a/lib/external_service_new/zendesk_downloader.rb +++ b/lib/external_service_new/zendesk_downloader.rb @@ -27,6 +27,8 @@ def each_email(id: nil, &block) end class ZendeskInternalDownloader + # maximum of 100 records per page + PER_PAGE = 100 def initialize(dispatcher:, filters: nil, logger:nil) raise "dispatcher must not be nil, found #{dispatcher.inspect}" unless dispatcher @@ -36,17 +38,26 @@ def initialize(dispatcher:, filters: nil, logger:nil) end def each_email(&block) + page = 1 return to_enum(:each_email) unless block logger && logger.info("Downloading Zendesk Customer List with #{filters ? filters.inspect : "no filters"}") - response = dispatcher.dispatch(:query, "type:user role:end-user") - response.each {|contact| yield(contact["email"])} + loop do + response = dispatcher.dispatch(:query, each_email_path).per_page(PER_PAGE).page(page).fetch + break if response.empty? + response.each{|contact| yield(contact["email"])} + + page +=1 + end logger && logger.info("Downloaded Zendesk )Customer List") end private + def each_email_path + "type:user role:end-user" + end attr_reader :dispatcher, :filters, :logger end end From 202e67498675511aca5bd619e974d900d6a465bd Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 10:44:34 -0400 Subject: [PATCH 3/3] changing version to 1.2.3 --- lib/wafflehouse/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/wafflehouse/version.rb b/lib/wafflehouse/version.rb index 707aefc..1063191 100644 --- a/lib/wafflehouse/version.rb +++ b/lib/wafflehouse/version.rb @@ -1,3 +1,3 @@ module Wafflehouse - VERSION = "1.2.2" + VERSION = "1.2.3" end