From 29120b06a19a69bc510735f0b81e8cd588a52f15 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 10:41:13 -0400 Subject: [PATCH 01/18] 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 02/18] 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 03/18] 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 From 199bf821503613e695282ec93575a36a145c9836 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 16:08:30 -0400 Subject: [PATCH 04/18] creation of the connector for Campaign Monitor (createsend) --- lib/connectors/createsend.rb | 38 ++++++++++++ .../createsend_dispatcher.rb | 41 +++++++++++++ .../createsend_downloader.rb | 58 +++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100644 lib/connectors/createsend.rb create mode 100644 lib/external_service_new/createsend_dispatcher.rb create mode 100644 lib/external_service_new/createsend_downloader.rb diff --git a/lib/connectors/createsend.rb b/lib/connectors/createsend.rb new file mode 100644 index 0000000..a46f27c --- /dev/null +++ b/lib/connectors/createsend.rb @@ -0,0 +1,38 @@ +module Connectors + class Createsend + def self.call(params:, auth:) + new(params, auth) + end + + def initialize(params, auth) + @params = params + @auth = auth + end + + attr_reader :params, :auth + private :params, :auth + + def connector_code + "createsend" + end + + def description + "createsend mailinglist" + end + + def account_identifiers + { + #there is nothing giving by omniauth that we could use + } + end + + def credential_details + { + + refresh_token: auth.credentials.refresh_token, + oauth_token: auth.credentials.token, + expires: auth.credentials.expires_at, + } + end + end +end \ No newline at end of file diff --git a/lib/external_service_new/createsend_dispatcher.rb b/lib/external_service_new/createsend_dispatcher.rb new file mode 100644 index 0000000..0571f8e --- /dev/null +++ b/lib/external_service_new/createsend_dispatcher.rb @@ -0,0 +1,41 @@ +require "oj" +require "rest_client" +require "external_service_new/rest_client_dispatcher" +require "createsend" + +module ExternalServiceNew + class CreatesendDispatcher < RestClientDispatcher + #maximum and minimun email fetch by page + PAGE_SIZE_MAX = 1000 + PAGE_SIZE_MIN = 10 + + def initialize(account_identifiers: nil, credential_details:, sleep_time_seconds: 5, client: RestClient) + + puts " CreatesendDispatcher initialize credential_details: #{credential_details}" + @auth = { + :access_token => credential_details.fetch(:oauth_token), + :refresh_token => credential_details.fetch(:refresh_token) + } + + cs = CreateSend::CreateSend.new @auth + clients = cs.clients + @client = CreateSend::Client.new @auth, clients[0].ClientID + end + + #method = :lists will get the lists + #method = :subscribers get the subscribers of a list + def dispatch(method, id: nil, page: 1, page_size: PAGE_SIZE_MAX) + super() do + if (method == :lists) + @client.lists + elsif (method == :subscribers) + if (page_size < PAGE_SIZE_MIN) + page_size = PAGE_SIZE_MIN + end + list_client = CreateSend::List.new @auth, id + list_client.active("", page, page_size, "email", "asc") + end + end + end + end +end diff --git a/lib/external_service_new/createsend_downloader.rb b/lib/external_service_new/createsend_downloader.rb new file mode 100644 index 0000000..6b38ed5 --- /dev/null +++ b/lib/external_service_new/createsend_downloader.rb @@ -0,0 +1,58 @@ +module ExternalServiceNew + class CreatesendDownloader + def initialize(dispatcher:, logger:nil) + @dispatcher = dispatcher + @logger = logger + end + + def each_list(&block) + return to_enum(:each_list) unless block + response = dispatcher.dispatch(:lists).each do |list| + email_count = dispatcher.dispatch(:subscribers, id:list.ListID, page_size:10) + block.call(list[:ListID], list[:Name], email_count[:TotalNumberOfRecords]) + end + end + + def each_email(list_id:, &block) + raise "list_id must not be nil" unless list_id + CreatesendInternalDownloader.new( + dispatcher: dispatcher, + logger: logger + ).each_email(list_id: list_id, &block) + end + + private + + attr_reader :dispatcher, :logger + end + + class CreatesendInternalDownloader + def initialize(dispatcher:, filters: nil, logger:nil) + raise "dispatcher must not be nil, found #{dispatcher.inspect}" unless dispatcher + + @dispatcher = dispatcher + @filters = filters + @logger = logger + end + + def each_email(list_id:, &block) + page = 1 + return to_enum(:each_email) unless block + logger && logger.info("Downloading Campaign Monitor List with #{filters ? filters.inspect : "no filters"}") + + loop do + response = dispatcher.dispatch(:subscribers, id: list_id, page: page) + break if response[:Results].empty? + response[:Results].each{|contact| yield(contact[:EmailAddress])} + + page +=1 + end + + logger && logger.info("Downloaded Campaign Monitor ListID: #{list_id}") + end + + private + + attr_reader :dispatcher, :filters, :logger + end +end From 3fa3d7d6a4d4a881c11ed8060b7b1b6c65536413 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 16:08:56 -0400 Subject: [PATCH 05/18] adding require for new connector --- lib/wafflehouse.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/wafflehouse.rb b/lib/wafflehouse.rb index 508d901..ae626e3 100644 --- a/lib/wafflehouse.rb +++ b/lib/wafflehouse.rb @@ -1,9 +1,12 @@ +require "connectors/createsend" require "connectors/hubspot" require "connectors/mailchimp" require "connectors/shopify" require "connectors/salesforce" require "connectors/zendesk" require "external_service_new/rest_client_dispatcher" +require "external_service_new/createsend_dispatcher" +require "external_service_new/createsend_downloader" require "external_service_new/hubspot_dispatcher" require "external_service_new/hubspot_downloader" require "external_service_new/mailchimp_dispatcher" From 487b46af8660191dd82465ea9873641612697aa0 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 16:09:28 -0400 Subject: [PATCH 06/18] adding gem for createsend --- wafflehouse.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/wafflehouse.gemspec b/wafflehouse.gemspec index a69fad5..79e3b97 100644 --- a/wafflehouse.gemspec +++ b/wafflehouse.gemspec @@ -32,6 +32,7 @@ Gem::Specification.new do |spec| spec.add_dependency 'oj' spec.add_dependency 'rest-client' spec.add_dependency 'zendesk_api' + spec.add_dependency 'createsend' end From 400c93d29cfd441d0f3e5a9721ef0e7101a60634 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 16:10:56 -0400 Subject: [PATCH 07/18] better log message --- lib/external_service_new/createsend_downloader.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/external_service_new/createsend_downloader.rb b/lib/external_service_new/createsend_downloader.rb index 6b38ed5..e4ec2a1 100644 --- a/lib/external_service_new/createsend_downloader.rb +++ b/lib/external_service_new/createsend_downloader.rb @@ -38,7 +38,7 @@ def initialize(dispatcher:, filters: nil, logger:nil) def each_email(list_id:, &block) page = 1 return to_enum(:each_email) unless block - logger && logger.info("Downloading Campaign Monitor List with #{filters ? filters.inspect : "no filters"}") + logger && logger.info("Downloading Campaign Monitor ListId: #{list_id} with #{filters ? filters.inspect : "no filters"}") loop do response = dispatcher.dispatch(:subscribers, id: list_id, page: page) From dcfaaf91b96cab72f03162b539981910f538b08a Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 16:17:12 -0400 Subject: [PATCH 08/18] adding comment about second request --- lib/external_service_new/createsend_downloader.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/external_service_new/createsend_downloader.rb b/lib/external_service_new/createsend_downloader.rb index e4ec2a1..3ca0519 100644 --- a/lib/external_service_new/createsend_downloader.rb +++ b/lib/external_service_new/createsend_downloader.rb @@ -8,6 +8,7 @@ def initialize(dispatcher:, logger:nil) def each_list(&block) return to_enum(:each_list) unless block response = dispatcher.dispatch(:lists).each do |list| + # We are doing an other request to get the total number of email by list email_count = dispatcher.dispatch(:subscribers, id:list.ListID, page_size:10) block.call(list[:ListID], list[:Name], email_count[:TotalNumberOfRecords]) end From 8b3081e85f392a8acb9b450429ef722d79772e80 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 16:17:54 -0400 Subject: [PATCH 09/18] remove unnecessary puts --- lib/external_service_new/createsend_dispatcher.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/external_service_new/createsend_dispatcher.rb b/lib/external_service_new/createsend_dispatcher.rb index 0571f8e..9eb4aae 100644 --- a/lib/external_service_new/createsend_dispatcher.rb +++ b/lib/external_service_new/createsend_dispatcher.rb @@ -11,7 +11,6 @@ class CreatesendDispatcher < RestClientDispatcher def initialize(account_identifiers: nil, credential_details:, sleep_time_seconds: 5, client: RestClient) - puts " CreatesendDispatcher initialize credential_details: #{credential_details}" @auth = { :access_token => credential_details.fetch(:oauth_token), :refresh_token => credential_details.fetch(:refresh_token) From 6a7d17a2d37fdcdca7cae0cdb3dc4f77032fc8d9 Mon Sep 17 00:00:00 2001 From: Polux Date: Wed, 10 Aug 2016 16:18:49 -0400 Subject: [PATCH 10/18] update version to reflect new connector --- 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 1063191..ae99155 100644 --- a/lib/wafflehouse/version.rb +++ b/lib/wafflehouse/version.rb @@ -1,3 +1,3 @@ module Wafflehouse - VERSION = "1.2.3" + VERSION = "1.3.0" end From 434f70f63fdc2d9fe16e47652adcbfb1c4e2c1d5 Mon Sep 17 00:00:00 2001 From: Polux Date: Thu, 11 Aug 2016 10:06:17 -0400 Subject: [PATCH 11/18] be sure to have symbolise_keys in hash account_identifiers and credential_details --- lib/external_service_new/createsend_dispatcher.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/external_service_new/createsend_dispatcher.rb b/lib/external_service_new/createsend_dispatcher.rb index 9eb4aae..d619139 100644 --- a/lib/external_service_new/createsend_dispatcher.rb +++ b/lib/external_service_new/createsend_dispatcher.rb @@ -10,7 +10,8 @@ class CreatesendDispatcher < RestClientDispatcher PAGE_SIZE_MIN = 10 def initialize(account_identifiers: nil, credential_details:, sleep_time_seconds: 5, client: RestClient) - + account_identifiers = account_identifiers.symbolize_keys + credential_details = credential_details.symbolize_keys @auth = { :access_token => credential_details.fetch(:oauth_token), :refresh_token => credential_details.fetch(:refresh_token) From 46e2bbd90a2a84155e4b6964b85bbd57fd422921 Mon Sep 17 00:00:00 2001 From: Polux Date: Fri, 12 Aug 2016 15:36:13 -0400 Subject: [PATCH 12/18] createsend renamed to campaignmonitor --- lib/connectors/campaignmonitor.rb | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 lib/connectors/campaignmonitor.rb diff --git a/lib/connectors/campaignmonitor.rb b/lib/connectors/campaignmonitor.rb new file mode 100644 index 0000000..f09a716 --- /dev/null +++ b/lib/connectors/campaignmonitor.rb @@ -0,0 +1,37 @@ +module Connectors + class CampainMonitor + def self.call(params:, auth:) + new(params, auth) + end + + def initialize(params, auth) + @params = params + @auth = auth + end + + attr_reader :params, :auth + private :params, :auth + + def connector_code + "createsend" + end + + def description + "createsend mailinglist" + end + + def account_identifiers + { + #there is nothing giving by omniauth that we could use + } + end + + def credential_details + { + refresh_token: auth.credentials.refresh_token, + oauth_token: auth.credentials.token, + expires: auth.credentials.expires_at, + } + end + end +end \ No newline at end of file From 3851382d6c2978adcc047290587f74bb198baa00 Mon Sep 17 00:00:00 2001 From: Polux Date: Fri, 12 Aug 2016 15:46:02 -0400 Subject: [PATCH 13/18] following renaming of createsend to campagnmonitor --- .../campaignmonitor_dispatcher.rb | 41 +++++++++++++ .../campaignmonitor_downloader.rb | 59 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 lib/external_service_new/campaignmonitor_dispatcher.rb create mode 100644 lib/external_service_new/campaignmonitor_downloader.rb diff --git a/lib/external_service_new/campaignmonitor_dispatcher.rb b/lib/external_service_new/campaignmonitor_dispatcher.rb new file mode 100644 index 0000000..d619139 --- /dev/null +++ b/lib/external_service_new/campaignmonitor_dispatcher.rb @@ -0,0 +1,41 @@ +require "oj" +require "rest_client" +require "external_service_new/rest_client_dispatcher" +require "createsend" + +module ExternalServiceNew + class CreatesendDispatcher < RestClientDispatcher + #maximum and minimun email fetch by page + PAGE_SIZE_MAX = 1000 + PAGE_SIZE_MIN = 10 + + def initialize(account_identifiers: nil, credential_details:, sleep_time_seconds: 5, client: RestClient) + account_identifiers = account_identifiers.symbolize_keys + credential_details = credential_details.symbolize_keys + @auth = { + :access_token => credential_details.fetch(:oauth_token), + :refresh_token => credential_details.fetch(:refresh_token) + } + + cs = CreateSend::CreateSend.new @auth + clients = cs.clients + @client = CreateSend::Client.new @auth, clients[0].ClientID + end + + #method = :lists will get the lists + #method = :subscribers get the subscribers of a list + def dispatch(method, id: nil, page: 1, page_size: PAGE_SIZE_MAX) + super() do + if (method == :lists) + @client.lists + elsif (method == :subscribers) + if (page_size < PAGE_SIZE_MIN) + page_size = PAGE_SIZE_MIN + end + list_client = CreateSend::List.new @auth, id + list_client.active("", page, page_size, "email", "asc") + end + end + end + end +end diff --git a/lib/external_service_new/campaignmonitor_downloader.rb b/lib/external_service_new/campaignmonitor_downloader.rb new file mode 100644 index 0000000..3ca0519 --- /dev/null +++ b/lib/external_service_new/campaignmonitor_downloader.rb @@ -0,0 +1,59 @@ +module ExternalServiceNew + class CreatesendDownloader + def initialize(dispatcher:, logger:nil) + @dispatcher = dispatcher + @logger = logger + end + + def each_list(&block) + return to_enum(:each_list) unless block + response = dispatcher.dispatch(:lists).each do |list| + # We are doing an other request to get the total number of email by list + email_count = dispatcher.dispatch(:subscribers, id:list.ListID, page_size:10) + block.call(list[:ListID], list[:Name], email_count[:TotalNumberOfRecords]) + end + end + + def each_email(list_id:, &block) + raise "list_id must not be nil" unless list_id + CreatesendInternalDownloader.new( + dispatcher: dispatcher, + logger: logger + ).each_email(list_id: list_id, &block) + end + + private + + attr_reader :dispatcher, :logger + end + + class CreatesendInternalDownloader + def initialize(dispatcher:, filters: nil, logger:nil) + raise "dispatcher must not be nil, found #{dispatcher.inspect}" unless dispatcher + + @dispatcher = dispatcher + @filters = filters + @logger = logger + end + + def each_email(list_id:, &block) + page = 1 + return to_enum(:each_email) unless block + logger && logger.info("Downloading Campaign Monitor ListId: #{list_id} with #{filters ? filters.inspect : "no filters"}") + + loop do + response = dispatcher.dispatch(:subscribers, id: list_id, page: page) + break if response[:Results].empty? + response[:Results].each{|contact| yield(contact[:EmailAddress])} + + page +=1 + end + + logger && logger.info("Downloaded Campaign Monitor ListID: #{list_id}") + end + + private + + attr_reader :dispatcher, :filters, :logger + end +end From b35a42b485fd9580fbe9ddd16c0e1bd740010571 Mon Sep 17 00:00:00 2001 From: Polux Date: Fri, 12 Aug 2016 15:48:42 -0400 Subject: [PATCH 14/18] following renaming of createsend to campagnmonitor --- lib/external_service_new/campaignmonitor_dispatcher.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/external_service_new/campaignmonitor_dispatcher.rb b/lib/external_service_new/campaignmonitor_dispatcher.rb index d619139..94c0234 100644 --- a/lib/external_service_new/campaignmonitor_dispatcher.rb +++ b/lib/external_service_new/campaignmonitor_dispatcher.rb @@ -5,7 +5,6 @@ module ExternalServiceNew class CreatesendDispatcher < RestClientDispatcher - #maximum and minimun email fetch by page PAGE_SIZE_MAX = 1000 PAGE_SIZE_MIN = 10 @@ -13,8 +12,8 @@ def initialize(account_identifiers: nil, credential_details:, sleep_time_seconds account_identifiers = account_identifiers.symbolize_keys credential_details = credential_details.symbolize_keys @auth = { - :access_token => credential_details.fetch(:oauth_token), - :refresh_token => credential_details.fetch(:refresh_token) + access_token: credential_details.fetch(:oauth_token), + refresh_token: credential_details.fetch(:refresh_token) } cs = CreateSend::CreateSend.new @auth From 0722ebb23413768d3682d17907af2d21db6ac286 Mon Sep 17 00:00:00 2001 From: Polux Date: Fri, 12 Aug 2016 15:52:42 -0400 Subject: [PATCH 15/18] misswriting correction. --- lib/connectors/campaignmonitor.rb | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/connectors/campaignmonitor.rb b/lib/connectors/campaignmonitor.rb index f09a716..9052d18 100644 --- a/lib/connectors/campaignmonitor.rb +++ b/lib/connectors/campaignmonitor.rb @@ -1,36 +1,39 @@ module Connectors - class CampainMonitor + class CampaignMonitor def self.call(params:, auth:) new(params, auth) end def initialize(params, auth) - @params = params - @auth = auth + @params = params + @auth = auth + @refresh_token = auth.credentials.refresh_token + @oauth_token = auth.credentials.token + @expires = auth.credentials.expires_at end attr_reader :params, :auth private :params, :auth def connector_code - "createsend" + "campaignmonitor" end def description - "createsend mailinglist" + "campaignmonitor mailinglist" end def account_identifiers { - #there is nothing giving by omniauth that we could use + #there is nothing from Omniauth that we could use } end def credential_details { - refresh_token: auth.credentials.refresh_token, - oauth_token: auth.credentials.token, - expires: auth.credentials.expires_at, + refresh_token: @refresh_token, + oauth_token: @oauth_token, + expires: @expires, } end end From d2c1b41b2754e2c664b571746747dd0a8e6d7998 Mon Sep 17 00:00:00 2001 From: Polux Date: Fri, 12 Aug 2016 15:53:55 -0400 Subject: [PATCH 16/18] following of renaming class --- lib/wafflehouse.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/wafflehouse.rb b/lib/wafflehouse.rb index ae626e3..711b051 100644 --- a/lib/wafflehouse.rb +++ b/lib/wafflehouse.rb @@ -1,12 +1,12 @@ -require "connectors/createsend" +require "connectors/campaignmonitor" require "connectors/hubspot" require "connectors/mailchimp" require "connectors/shopify" require "connectors/salesforce" require "connectors/zendesk" require "external_service_new/rest_client_dispatcher" -require "external_service_new/createsend_dispatcher" -require "external_service_new/createsend_downloader" +require "external_service_new/campaignmonitor_dispatcher" +require "external_service_new/campaignmonitor_downloader" require "external_service_new/hubspot_dispatcher" require "external_service_new/hubspot_downloader" require "external_service_new/mailchimp_dispatcher" From 1378545cbd67693f4a2335e58710652e52141719 Mon Sep 17 00:00:00 2001 From: Polux Date: Fri, 12 Aug 2016 15:56:31 -0400 Subject: [PATCH 17/18] deletion of old_file --- lib/connectors/createsend.rb | 38 ------------ .../createsend_dispatcher.rb | 41 ------------- .../createsend_downloader.rb | 59 ------------------- 3 files changed, 138 deletions(-) delete mode 100644 lib/connectors/createsend.rb delete mode 100644 lib/external_service_new/createsend_dispatcher.rb delete mode 100644 lib/external_service_new/createsend_downloader.rb diff --git a/lib/connectors/createsend.rb b/lib/connectors/createsend.rb deleted file mode 100644 index a46f27c..0000000 --- a/lib/connectors/createsend.rb +++ /dev/null @@ -1,38 +0,0 @@ -module Connectors - class Createsend - def self.call(params:, auth:) - new(params, auth) - end - - def initialize(params, auth) - @params = params - @auth = auth - end - - attr_reader :params, :auth - private :params, :auth - - def connector_code - "createsend" - end - - def description - "createsend mailinglist" - end - - def account_identifiers - { - #there is nothing giving by omniauth that we could use - } - end - - def credential_details - { - - refresh_token: auth.credentials.refresh_token, - oauth_token: auth.credentials.token, - expires: auth.credentials.expires_at, - } - end - end -end \ No newline at end of file diff --git a/lib/external_service_new/createsend_dispatcher.rb b/lib/external_service_new/createsend_dispatcher.rb deleted file mode 100644 index d619139..0000000 --- a/lib/external_service_new/createsend_dispatcher.rb +++ /dev/null @@ -1,41 +0,0 @@ -require "oj" -require "rest_client" -require "external_service_new/rest_client_dispatcher" -require "createsend" - -module ExternalServiceNew - class CreatesendDispatcher < RestClientDispatcher - #maximum and minimun email fetch by page - PAGE_SIZE_MAX = 1000 - PAGE_SIZE_MIN = 10 - - def initialize(account_identifiers: nil, credential_details:, sleep_time_seconds: 5, client: RestClient) - account_identifiers = account_identifiers.symbolize_keys - credential_details = credential_details.symbolize_keys - @auth = { - :access_token => credential_details.fetch(:oauth_token), - :refresh_token => credential_details.fetch(:refresh_token) - } - - cs = CreateSend::CreateSend.new @auth - clients = cs.clients - @client = CreateSend::Client.new @auth, clients[0].ClientID - end - - #method = :lists will get the lists - #method = :subscribers get the subscribers of a list - def dispatch(method, id: nil, page: 1, page_size: PAGE_SIZE_MAX) - super() do - if (method == :lists) - @client.lists - elsif (method == :subscribers) - if (page_size < PAGE_SIZE_MIN) - page_size = PAGE_SIZE_MIN - end - list_client = CreateSend::List.new @auth, id - list_client.active("", page, page_size, "email", "asc") - end - end - end - end -end diff --git a/lib/external_service_new/createsend_downloader.rb b/lib/external_service_new/createsend_downloader.rb deleted file mode 100644 index 3ca0519..0000000 --- a/lib/external_service_new/createsend_downloader.rb +++ /dev/null @@ -1,59 +0,0 @@ -module ExternalServiceNew - class CreatesendDownloader - def initialize(dispatcher:, logger:nil) - @dispatcher = dispatcher - @logger = logger - end - - def each_list(&block) - return to_enum(:each_list) unless block - response = dispatcher.dispatch(:lists).each do |list| - # We are doing an other request to get the total number of email by list - email_count = dispatcher.dispatch(:subscribers, id:list.ListID, page_size:10) - block.call(list[:ListID], list[:Name], email_count[:TotalNumberOfRecords]) - end - end - - def each_email(list_id:, &block) - raise "list_id must not be nil" unless list_id - CreatesendInternalDownloader.new( - dispatcher: dispatcher, - logger: logger - ).each_email(list_id: list_id, &block) - end - - private - - attr_reader :dispatcher, :logger - end - - class CreatesendInternalDownloader - def initialize(dispatcher:, filters: nil, logger:nil) - raise "dispatcher must not be nil, found #{dispatcher.inspect}" unless dispatcher - - @dispatcher = dispatcher - @filters = filters - @logger = logger - end - - def each_email(list_id:, &block) - page = 1 - return to_enum(:each_email) unless block - logger && logger.info("Downloading Campaign Monitor ListId: #{list_id} with #{filters ? filters.inspect : "no filters"}") - - loop do - response = dispatcher.dispatch(:subscribers, id: list_id, page: page) - break if response[:Results].empty? - response[:Results].each{|contact| yield(contact[:EmailAddress])} - - page +=1 - end - - logger && logger.info("Downloaded Campaign Monitor ListID: #{list_id}") - end - - private - - attr_reader :dispatcher, :filters, :logger - end -end From f910c843e4a84c5453bb7d79afcac3812b5caf63 Mon Sep 17 00:00:00 2001 From: Polux Date: Mon, 15 Aug 2016 07:25:19 -0400 Subject: [PATCH 18/18] =?UTF-8?q?rename=20class=20createsend=20=3D>=C2=A0c?= =?UTF-8?q?ampaign=20monitor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/external_service_new/campaignmonitor_dispatcher.rb | 2 +- lib/external_service_new/campaignmonitor_downloader.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/external_service_new/campaignmonitor_dispatcher.rb b/lib/external_service_new/campaignmonitor_dispatcher.rb index 94c0234..51a7009 100644 --- a/lib/external_service_new/campaignmonitor_dispatcher.rb +++ b/lib/external_service_new/campaignmonitor_dispatcher.rb @@ -4,7 +4,7 @@ require "createsend" module ExternalServiceNew - class CreatesendDispatcher < RestClientDispatcher + class CampaignMonitorDispatcher < RestClientDispatcher PAGE_SIZE_MAX = 1000 PAGE_SIZE_MIN = 10 diff --git a/lib/external_service_new/campaignmonitor_downloader.rb b/lib/external_service_new/campaignmonitor_downloader.rb index 3ca0519..4d15fd6 100644 --- a/lib/external_service_new/campaignmonitor_downloader.rb +++ b/lib/external_service_new/campaignmonitor_downloader.rb @@ -1,5 +1,5 @@ module ExternalServiceNew - class CreatesendDownloader + class CampaignMonitorDownloader def initialize(dispatcher:, logger:nil) @dispatcher = dispatcher @logger = logger