Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/external_service_new/zendesk_dispatcher.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
15 changes: 13 additions & 2 deletions lib/external_service_new/zendesk_downloader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
2 changes: 1 addition & 1 deletion lib/wafflehouse/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Wafflehouse
VERSION = "1.2.2"
VERSION = "1.2.3"
end