eco-helpers 3.0.14 → 3.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -2
  3. data/eco-helpers.gemspec +15 -14
  4. data/lib/eco/api/common/people/default_parsers/date_parser.rb +6 -0
  5. data/lib/eco/api/common/session/mailer/aws_provider.rb +85 -0
  6. data/lib/eco/api/common/session/mailer/provider_base.rb +61 -0
  7. data/lib/eco/api/common/session/mailer/sendgrid_provider.rb +117 -0
  8. data/lib/eco/api/common/session/mailer.rb +42 -71
  9. data/lib/eco/api/microcases/people_refresh.rb +1 -1
  10. data/lib/eco/api/session/batch/errors.rb +2 -2
  11. data/lib/eco/api/session/batch.rb +83 -37
  12. data/lib/eco/api/session/config/api.rb +96 -37
  13. data/lib/eco/api/session/config/apis/enviro_spaces.rb +106 -0
  14. data/lib/eco/api/session/config/apis/one_off.rb +94 -0
  15. data/lib/eco/api/session/config/apis/service_up.rb +37 -0
  16. data/lib/eco/api/session/config/apis/space_helpers.rb +41 -0
  17. data/lib/eco/api/session/config/apis.rb +81 -132
  18. data/lib/eco/api/session/config.rb +21 -3
  19. data/lib/eco/api/usecases/default_cases/samples/sftp_case.rb +1 -1
  20. data/lib/eco/api/usecases/graphql/helpers/base/error_handling.rb +19 -8
  21. data/lib/eco/api/usecases/graphql/helpers/base/graphql_env.rb +1 -0
  22. data/lib/eco/api/usecases/graphql/samples/location/command/dsl.rb +3 -7
  23. data/lib/eco/api/usecases/graphql/samples/location/command/service/tree_update.rb +6 -2
  24. data/lib/eco/cli/config/options_set.rb +10 -7
  25. data/lib/eco/cli/scripting/args_helpers.rb +18 -9
  26. data/lib/eco/cli_default/options.rb +8 -0
  27. data/lib/eco/cli_default/people.rb +3 -3
  28. data/lib/eco/language/basic_logger.rb +4 -2
  29. data/lib/eco/version.rb +1 -1
  30. metadata +37 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 660f0a85b269e559ec99381ea4f621dcf8495b4c9465594824ad30da872c0e75
4
- data.tar.gz: 3baf736b197cbf7784f116dacaa28f5d049acf8d62f15cdfe3669adcb3ae0b10
3
+ metadata.gz: baeb42abbb1d31497328afd4c813dec4acfebb598546ad55a4f1265a45dc89b5
4
+ data.tar.gz: 7d4c88626946b84e1ea22f3b27eb7570a9daa6d2962036e6fbf667b000dd5996
5
5
  SHA512:
6
- metadata.gz: ed21ee420598f8dc8d45895160475b37ebb5022219d9b6bd96ca9861faa8c03cb315db4a95626a24dd5f30627253661ed51c294792c050e99a8a9b3706610676
7
- data.tar.gz: d3800bad4334ec5bbfe5d0aa5dde65befc003b66a1abb6dbb104773c7cc6c3fcbe8da959fe239b6fd9b5cf48bea570703117ca804e6c4cf1394a37c0f90dca43
6
+ metadata.gz: 8af8fdbccacb57655756a01f0c30ff1d38c58e232f77fedc5aeb058cb7260ed1863834af1995d7268d355e09c00fedc671b4417f1f14d76c25c9609a038b47d3
7
+ data.tar.gz: c4daf6291086d8b15f5eb1606291e8161e0e0326b4f5ed8e917e95d09b9c1de7ff2665e44ec3ed35986d0cd07ec232dfe40822d0d32bbd12020f7290a9ce1405
data/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- ## [3.0.14] - 2024-09-xx
5
+ ## [3.0.17] - 2024-10-xx
6
6
 
7
7
  ### Added
8
8
 
@@ -10,7 +10,46 @@ All notable changes to this project will be documented in this file.
10
10
 
11
11
  ### Fixed
12
12
 
13
- - sftp errors
13
+ ## [3.0.16] - 2024-10-15
14
+
15
+ ### Added
16
+
17
+ ### Changed
18
+
19
+ - `Eco::API::Session::Batch#launch_batch`
20
+ - Made benchmarking consistent on last batch
21
+ - upgrade `ecoportal-api` core gem
22
+
23
+ ### Fixed
24
+
25
+ ## [3.0.15] - 2024-10-01
26
+
27
+ ### Added
28
+
29
+ - Support for **api** credential **spaces** (i.e. `uat`, etc.)
30
+ - `Eco::API::Session::Config::Api`
31
+ - `Eco::API::Session::Config::Apis`
32
+
33
+ ### Changed
34
+
35
+ - moved default mailer provider to `SendGrid`
36
+ - upgrade core **gem** `ecoportal-api`
37
+ - chain `-batch-mode`
38
+ - `Eco::API::Session::Batch` print actual error message.
39
+ - `Eco::API::UseCases::GraphQL::Helpers::Base::ErrorHandling` to treat `exit` as its own category `exiting?`
40
+ - **Added** `exception?` method which is `true` if there was an `exception` or an `exit`
41
+ - `Eco::API::Session::Config#add_api`: added chaining capability via `add_space` method
42
+ - In a block it will use same params as root definition
43
+ - As a chained command, it will only define a new `space` for that enviro `name`
44
+
45
+ ### Fixed
46
+
47
+ - `SCR#get_arg` when the option can be invoked in multiple ways
48
+ - `Eco::API::Session::Batch#offer_retry_on`
49
+ - Remove repetitive backtrace
50
+ - `Eco::API::UseCases::GraphQL::Samples::Location::Command::Service::TreeUpdate#email_digest` to include a bit of backtrace when there is an exception
51
+ - `Eco::API::UseCases::GraphQL::Samples::Location::Command::DSL#inputs`
52
+ - Moved **:error** `log` to only capture request errors alone.
14
53
 
15
54
  ## [3.0.13] - 2024-09-10
16
55
 
data/eco-helpers.gemspec CHANGED
@@ -2,14 +2,14 @@
2
2
  lib = File.expand_path('lib', __dir__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
- require "./lib/eco/version"
5
+ require './lib/eco/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "eco-helpers"
8
+ spec.name = 'eco-helpers'
9
9
  spec.version = Eco::VERSION
10
10
  spec.platform = Gem::Platform::RUBY
11
- spec.authors = ["Oscar Segura"]
12
- spec.email = ["oscar@ecoportal.co.nz"]
11
+ spec.authors = ['Oscar Segura']
12
+ spec.email = ['oscar@ecoportal.co.nz']
13
13
 
14
14
  spec.summary = "eco-helpers to manage people api cases"
15
15
  spec.homepage = "https://www.ecoportal.com"
@@ -25,14 +25,14 @@ Gem::Specification.new do |spec|
25
25
 
26
26
  #spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
27
27
  #spec.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
28
+ spec.require_paths = ['lib']
29
29
 
30
- spec.add_development_dependency "rake", ">= 13.0.3", "< 14"
31
- spec.add_development_dependency "redcarpet", ">= 3.6.0", "< 4"
32
- spec.add_development_dependency "rspec", ">= 3.12.0", "< 4"
33
- spec.add_development_dependency "rubocop", "~> 1"
34
- spec.add_development_dependency "rubocop-rake", "~> 0"
35
- spec.add_development_dependency "yard", ">= 0.9.34", "< 1"
30
+ spec.add_development_dependency 'rake', '>= 13.0.3', '< 14'
31
+ spec.add_development_dependency 'redcarpet', '>= 3.6.0', '< 4'
32
+ spec.add_development_dependency 'rspec', '>= 3.12.0', '< 4'
33
+ spec.add_development_dependency 'rubocop', '~> 1'
34
+ spec.add_development_dependency 'rubocop-rake', '~> 0'
35
+ spec.add_development_dependency 'yard', '~> 0.9'
36
36
 
37
37
  spec.add_dependency 'amatch', '>= 0.4.1', '< 0.5'
38
38
  spec.add_dependency 'aws-sdk-s3', '>= 1.142.0', '< 2'
@@ -40,9 +40,9 @@ Gem::Specification.new do |spec|
40
40
  spec.add_dependency 'bcrypt_pbkdf', '~> 1.0'
41
41
  spec.add_dependency 'docx', '>= 0.8.0', '< 0.9'
42
42
  spec.add_dependency 'dotenv', '~> 3'
43
- spec.add_dependency 'ecoportal-api', '~> 0.10'
44
- spec.add_dependency 'ecoportal-api-graphql', '~> 0.4', '>= 0.4.1'
45
- spec.add_dependency 'ecoportal-api-v2', '~> 2.0', '>= 2.0.9'
43
+ spec.add_dependency 'ecoportal-api', '~> 0.10', '>= 0.10.4'
44
+ spec.add_dependency 'ecoportal-api-graphql', '~> 0.4', '>= 0.4.2'
45
+ spec.add_dependency 'ecoportal-api-v2', '~> 2.0', '>= 2.0.10'
46
46
  spec.add_dependency 'ed25519', '~> 1.2'
47
47
  spec.add_dependency 'fast_excel', '>= 0.5.0', '< 0.6'
48
48
  spec.add_dependency 'fuzzy_match', '>= 2.1.0', '< 2.2'
@@ -54,6 +54,7 @@ Gem::Specification.new do |spec|
54
54
  spec.add_dependency 'roo', '>= 2.10.1', '< 2.11'
55
55
  spec.add_dependency 'roo-xls', '>= 1.2.0', '< 1.3'
56
56
  spec.add_dependency 'rubyzip', '>= 2.3.2', '< 2.4'
57
+ spec.add_dependency 'sendgrid-ruby', '~> 6.7.0'
57
58
  end
58
59
 
59
60
  # rubocop:enable Gemspec/DevelopmentDependencies
@@ -34,6 +34,7 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
34
34
  return nil if blank?(value)
35
35
  return value if value.is_a?(String)
36
36
  return nil unless [Date, Time].any? {|type| value.is_a?(type)}
37
+
37
38
  value&.strftime('%Y-%m-%d')
38
39
  rescue TypeError, Date::Error
39
40
  nil
@@ -42,6 +43,7 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
42
43
  def date?(value)
43
44
  return true if value.nil?
44
45
  return true if value.to_s.strip.empty?
46
+
45
47
  Date.parse(value)
46
48
  true
47
49
  rescue TypeError, Date::Error
@@ -51,11 +53,13 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
51
53
  def valid_range?(date)
52
54
  return true if date.nil?
53
55
  return false unless min_date <= date
56
+
54
57
  max_date >= date
55
58
  end
56
59
 
57
60
  def wrong!(value, attr:, desc: "Can't make a date out of")
58
61
  return if wrong(attr).key?(value)
62
+
59
63
  wrong(attr)[value] = value
60
64
  log(:warn) { "#{desc} '#{value}' for '#{attr}'" }
61
65
  nil
@@ -64,6 +68,7 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
64
68
  def wrong(attr = nil)
65
69
  @wrong ||= {}
66
70
  return @wrong if attr.nil?
71
+
67
72
  @wrong[attr] ||= {}
68
73
  end
69
74
 
@@ -78,6 +83,7 @@ class Eco::API::Common::People::DefaultParsers::DateParser < Eco::API::Common::L
78
83
  def blank?(value)
79
84
  return true if value.nil?
80
85
  return true if value.to_s.strip.empty?
86
+
81
87
  false
82
88
  end
83
89
  end
@@ -0,0 +1,85 @@
1
+ # rubocop:disable Naming/MethodParameterName
2
+ module Eco
3
+ module API
4
+ module Common
5
+ module Session
6
+ class Mailer
7
+ class AwsProvider < ProviderBase
8
+ def send_mail(subject:, body:, to: nil, cc: nil, bcc: nil)
9
+ ses.send_email(
10
+ destination: fetch_destination(to: to, cc: cc, bcc: bcc),
11
+ source: fetch_from,
12
+ message: {
13
+ subject: {
14
+ charset: "UTF-8",
15
+ data: subject
16
+ },
17
+ body: {
18
+ # NOTE: (html) will let you send html instead
19
+ # you can use both at once if you like
20
+ text: {
21
+ charset: "UTF-8",
22
+ data: body
23
+ }
24
+ }
25
+ }
26
+ )
27
+ end
28
+
29
+ # @return [Boolean] whether or not the mailer is configured for usage.
30
+ def configured?
31
+ fetch_access_key_id && fetch_secret_access_key && fetch_region
32
+ end
33
+
34
+ private
35
+
36
+ def credentials
37
+ @credentials ||= {
38
+ id: 'AWS_ACCESS_KEY_ID',
39
+ key: 'AWS_SECRET_ACCESS_KEY'
40
+ }
41
+ end
42
+
43
+ def ses
44
+ require 'aws-sdk-ses'
45
+ @ses ||= Aws::SES::Client.new(
46
+ access_key_id: fetch_access_key_id,
47
+ secret_access_key: fetch_secret_access_key,
48
+ region: fetch_region
49
+ )
50
+ rescue StandardError => err
51
+ log(:error) {
52
+ "Trying to send an email with wrong email configuration: #{err}"
53
+ }
54
+ end
55
+
56
+ def fetch_destination(to: nil, cc: nil, bcc: nil)
57
+ {
58
+ to_addresses: [fetch_to(to)].flatten.compact.uniq
59
+ }.tap do |dest|
60
+ cc = [cc].flatten.compact.uniq
61
+ bcc = [bcc].flatten.compact.uniq
62
+ dest.merge!(cc_addresses: cc) unless cc.empty?
63
+ dest.merge!(bcc_addresses: bcc) unless bcc.empty?
64
+ end
65
+ end
66
+
67
+ def fetch_region
68
+ config.mailer.region || ENV['AWS_REGION']
69
+ end
70
+
71
+ def fetch_server
72
+ config.mailer.server
73
+ end
74
+
75
+ def fetch_message_id_domain
76
+ config.mailer.message_id_domain
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ # rubocop:enable Naming/MethodParameterName
@@ -0,0 +1,61 @@
1
+ module Eco
2
+ module API
3
+ module Common
4
+ module Session
5
+ class Mailer
6
+ class ProviderBase
7
+ class << self
8
+ def to_desc(to: nil, cc: nil, bcc: nil)
9
+ cc_to = [cc].flatten.compact.uniq
10
+ bcc_to = [bcc].flatten.compact.uniq
11
+ { to_addresses: [to].flatten.compact.uniq }.tap do |dest|
12
+ dest.merge!(cc_addresses: cc_to) unless cc_to.empty?
13
+ dest.merge!(bcc_addresses: bcc_to) unless bcc_to.empty?
14
+ end
15
+ end
16
+ end
17
+
18
+ include Eco::Language::AuxiliarLogger
19
+
20
+ attr_reader :config
21
+
22
+ def initialize(config, logger:)
23
+ @config = config
24
+ @logger = logger
25
+ end
26
+
27
+ def send_mail(subject:, body:, to: nil, cc: nil, bcc: nil) # rubocop:disable Lint/UnusedMethodArgument
28
+ raise "You must implement this method"
29
+ end
30
+
31
+ def fetch_to(value = nil)
32
+ value || config.mailer.to
33
+ end
34
+
35
+ private
36
+
37
+ def credentials
38
+ raise "You must implement this method"
39
+ end
40
+
41
+ def fetch_from(value = nil)
42
+ value || config.mailer.from
43
+ end
44
+
45
+ def fetch_access_key_id
46
+ env_mail(:id) || config.mailer.access_key_id
47
+ end
48
+
49
+ def fetch_secret_access_key
50
+ env_mail(:key) || config.mailer.secret_access_key
51
+ end
52
+
53
+ def env_mail(prop)
54
+ ENV[credentials[prop]]
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,117 @@
1
+ # rubocop:disable Naming/MethodParameterName
2
+ module Eco
3
+ module API
4
+ module Common
5
+ module Session
6
+ class Mailer
7
+ class SendgridProvider < ProviderBase
8
+ def send_mail(subject:, body:, to: nil, cc: nil, bcc: nil)
9
+ return false unless sendgrid
10
+
11
+ data = to_data(
12
+ subject: subject,
13
+ body: body,
14
+ to: to,
15
+ cc: cc,
16
+ bcc: bcc
17
+ )
18
+
19
+ mailer._("send").post(request_body: data)
20
+ end
21
+
22
+ def fetch_to(value = nil)
23
+ emails = [super].flatten.compact
24
+ to_email_model(emails)
25
+ end
26
+
27
+ # @return [Boolean] whether or not the mailer is configured for usage.
28
+ def configured?
29
+ fetch_secret_access_key
30
+ end
31
+
32
+ private
33
+
34
+ def credentials
35
+ @credentials ||= {
36
+ id: 'SENDGRID_ACCESS_ID',
37
+ key: 'SENDGRID_ACCESS_KEY'
38
+ }
39
+ end
40
+
41
+ def to_data(subject:, body:, to: nil, cc: nil, bcc: nil)
42
+ {
43
+ "personalizations" => [
44
+ {
45
+ "to" => fetch_to(to).flatten,
46
+ "subject" => subject
47
+ }.tap do |pers|
48
+ merge_if('cc', cc, target: pers)
49
+ merge_if('bcc', bcc, target: pers)
50
+ end
51
+ ],
52
+ "from" => fetch_from,
53
+ "content" => [
54
+ {
55
+ "type" => "text/plain",
56
+ "value" => body
57
+ }
58
+ ]
59
+ }
60
+ end
61
+
62
+ def mailer
63
+ @mailer ||= sendgrid&.client&.mail
64
+ end
65
+
66
+ def sendgrid
67
+ require 'sendgrid-ruby'
68
+ extend(::SendGrid) unless is_a?(SendGrid)
69
+
70
+ @sendgrid ||= SendGrid::API.new(
71
+ api_key: fetch_secret_access_key
72
+ )
73
+ rescue StandardError => err
74
+ log(:error) {
75
+ "Trying to send an email with wrong email configuration: #{err}"
76
+ }
77
+ nil
78
+ end
79
+
80
+ def to_email_model(value)
81
+ case value
82
+ when Array
83
+ value.map do |val|
84
+ to_email_model(val)
85
+ end.compact
86
+ else
87
+ return if value.to_s.strip.empty?
88
+
89
+ {
90
+ "email" => value
91
+ }
92
+ end
93
+ end
94
+
95
+ def merge_if(key, data, target: {})
96
+ return if data.to_s.strip.empty?
97
+
98
+ key_data = to_email_model(data)
99
+
100
+ return if key_data.nil?
101
+ return if key_data.empty?
102
+
103
+ target.merge!({key.to_s => key_data})
104
+ end
105
+
106
+ def fetch_from(value = nil)
107
+ email = [super].flatten.compact.first
108
+ to_email_model(email)
109
+ end
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ # rubocop:enable Naming/MethodParameterName
@@ -1,4 +1,8 @@
1
1
  # rubocop:disable Naming/MethodParameterName
2
+
3
+ require_relative 'mailer/provider_base'
4
+ require_relative 'mailer/aws_provider'
5
+ require_relative 'mailer/sendgrid_provider'
2
6
  module Eco
3
7
  module API
4
8
  module Common
@@ -6,12 +10,17 @@ module Eco
6
10
  class Mailer
7
11
  include Eco::Language::AuxiliarLogger
8
12
 
13
+ DEFAULT_PROVIDER = :sendgrid
14
+
15
+ attr_reader :provider
16
+
9
17
  # @param enviro [Eco::API::Common::Session::Environment]
10
- def initialize(enviro:)
18
+ def initialize(enviro:, provider: DEFAULT_PROVIDER)
11
19
  msg = "Required Environment object (enviro:). Given: #{enviro.class}"
12
20
  raise msg if enviro && !enviro.is_a?(Eco::API::Common::Session::Environment)
13
21
 
14
- @enviro = enviro
22
+ @enviro = enviro
23
+ @provider = provider || DEFAULT_PROVIDER
15
24
  end
16
25
 
17
26
  # Sends an email
@@ -19,25 +28,27 @@ module Eco
19
28
  # @param subject [String] subject of the email
20
29
  # @param body [String] `html` or plain text message
21
30
  def mail(subject:, body:, to: nil, cc: nil, bcc: nil)
22
- ses.send_email(
23
- destination: fetch_destination(to: to, cc: cc, bcc: bcc),
24
- source: fetch_from,
25
- message: {
26
- subject: {
27
- charset: "UTF-8",
28
- data: subject,
29
- },
30
- body: {
31
- # NOTE: (html) will let you send html instead
32
- # you can use both at once if you like
33
- text: {
34
- charset: "UTF-8",
35
- data: body
36
- }
37
- }
38
- }
31
+ return false unless (serv = service)
32
+
33
+ unless serv.configured?
34
+ msg = "Mailer: You are missing configuration parameters "
35
+ msg << "for '#{provider}'. Review your .env file"
36
+ log(:error) { msg }
37
+ return false
38
+ end
39
+
40
+ serv.send_mail(
41
+ subject: subject,
42
+ body: body,
43
+ to: to,
44
+ cc: cc,
45
+ bcc: bcc
39
46
  ).tap do |response|
40
- msg = "Sent email (MessageId: #{response.message_id}) to #{fetch_destination(to: to, cc: cc, bcc: bcc)}"
47
+ next unless response
48
+
49
+ to_addr = serv.fetch_to(to)
50
+ # msg = "Sent email (MessageId: #{response.message_id}) to #{fetch_destination(to: to, cc: cc, bcc: bcc)}"
51
+ msg = "Sent email #{ProviderBase.to_desc(to: to_addr, cc: cc, bcc: bcc)}"
41
52
  puts msg
42
53
  log(:debug) { msg }
43
54
  end
@@ -45,21 +56,18 @@ module Eco
45
56
 
46
57
  private
47
58
 
48
- def ses
49
- require 'aws-sdk-ses'
50
- begin
51
- @ses ||= Aws::SES::Client.new(
52
- access_key_id: fetch_access_key_id,
53
- secret_access_key: fetch_secret_access_key,
54
- region: fetch_region
55
- )
56
- rescue StandardError => err
57
- log(:error) {
58
- "Trying to send an email with wrong email configuration: #{err}"
59
- }
59
+ def service
60
+ case provider
61
+ when :aws
62
+ AwsProvider.new(config, logger: logger)
63
+ when :sendgrid
64
+ SendgridProvider.new(config, logger: logger)
65
+ else
66
+ msg = "Unknown mail provider '#{provider}'"
67
+ puts msg
68
+ log(:debug) { msg }
69
+ nil
60
70
  end
61
-
62
- @ses
63
71
  end
64
72
 
65
73
  def logger
@@ -69,43 +77,6 @@ module Eco
69
77
  def config
70
78
  @enviro.config || {}
71
79
  end
72
-
73
- def fetch_destination(to: nil, cc: nil, bcc: nil)
74
- cc_to = [cc].flatten.compact.uniq
75
- bcc_to = [bcc].flatten.compact.uniq
76
- { to_addresses: [fetch_to(to)].flatten }.tap do |dest|
77
- dest.merge!(cc_addresses: cc_to) unless cc_to.empty?
78
- dest.merge!(bcc_addresses: bcc_to) unless bcc_to.empty?
79
- end
80
- end
81
-
82
- def fetch_to(value = nil)
83
- value || config.mailer.to
84
- end
85
-
86
- def fetch_from(value = nil)
87
- value || config.mailer.from
88
- end
89
-
90
- def fetch_access_key_id
91
- config.mailer.access_key_id || ENV['AWS_ACCESS_KEY_ID']
92
- end
93
-
94
- def fetch_secret_access_key
95
- config.mailer.secret_access_key || ENV['AWS_SECRET_ACCESS_KEY']
96
- end
97
-
98
- def fetch_region
99
- config.mailer.region || ENV['AWS_REGION']
100
- end
101
-
102
- def fetch_server
103
- config.mailer.server
104
- end
105
-
106
- def fetch_message_id_domain
107
- config.mailer.message_id_domain
108
- end
109
80
  end
110
81
  end
111
82
  end
@@ -25,7 +25,7 @@ module Eco
25
25
 
26
26
  created = people.length - ini
27
27
  msg = "Going to refresh #{people.length} people with server data"
28
- msg += " (including #{created} that were created)" if created.positive?
28
+ msg << " (including #{created} that were created)" if created.positive?
29
29
  log(:info) { msg }
30
30
 
31
31
  start = Time.now
@@ -116,7 +116,7 @@ module Eco
116
116
  msgs = strs
117
117
 
118
118
  if msgs.empty?
119
- "There were no errors for the current batch '#{method}'!! ;)"
119
+ "There were no errors for the current batch '#{method}'!! ;) "
120
120
  else
121
121
  "There were #{msgs.length} errors:\n" + msgs.join("\n")
122
122
  end
@@ -127,7 +127,7 @@ module Eco
127
127
 
128
128
  if msgs.empty?
129
129
  log(:info) {
130
- "There were no errors for the current batch '#{method}'!! ;)"
130
+ "There were no errors for the current batch '#{method}'!! ;) "
131
131
  }
132
132
  else
133
133
  msg = "There were #{msgs.length} errors:\n"