Class: Sendgrid::Toolkit

Inherits:
Object
  • Object
show all
Defined in:
app/services/sendgrid/toolkit.rb

Overview

Service object: toolkit.

Constant Summary collapse

PROFILES =

Profiles.

%i[warmlyyours warmlyyours_transaction warmlyyours_marketing].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Toolkit

Returns a new instance of Toolkit.

Parameters:

  • options (Hash) (defaults to: {})

    configurable options

Options Hash (options):

  • logger (Logger)

    logger to use (defaults to Rails.logger)

  • profile (Symbol)

    SendGrid profile from PROFILES (defaults to :warmlyyours)

  • api_key (String)

    SendGrid API key (defaults to the configured key for the profile)



13
14
15
16
17
18
19
20
21
# File 'app/services/sendgrid/toolkit.rb', line 13

def initialize(options = {})
  require 'sendgrid-ruby'

  @logger = options[:logger] || Rails.logger
  @profile = options[:profile] || :warmlyyours
  api_key = Heatwave::Configuration.fetch(:sendgrid_api, @profile, :api_key)
  @api = SendGrid::API.new(api_key: options[:api_key] || api_key)
  @client = @api.client
end

Instance Attribute Details

#apiObject (readonly)

Returns the value of attribute api.



7
8
9
# File 'app/services/sendgrid/toolkit.rb', line 7

def api
  @api
end

#clientObject (readonly)

Returns the value of attribute client.



7
8
9
# File 'app/services/sendgrid/toolkit.rb', line 7

def client
  @client
end

#loggerObject (readonly)

Returns the value of attribute logger.



7
8
9
# File 'app/services/sendgrid/toolkit.rb', line 7

def logger
  @logger
end

Class Method Details

.delete_blocks(emails: []) ⇒ Object



47
48
49
50
51
# File 'app/services/sendgrid/toolkit.rb', line 47

def self.delete_blocks(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_blocks(emails: emails)
  end.flatten.uniq
end

.delete_bounces(emails: []) ⇒ Object



59
60
61
62
63
# File 'app/services/sendgrid/toolkit.rb', line 59

def self.delete_bounces(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_bounces(emails: emails)
  end.flatten.uniq
end

.delete_invalid_emails(emails: []) ⇒ Object



53
54
55
56
57
# File 'app/services/sendgrid/toolkit.rb', line 53

def self.delete_invalid_emails(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_invalid_emails(emails: emails)
  end.flatten.uniq
end

.delete_invalids(emails: []) ⇒ Object



41
42
43
44
45
# File 'app/services/sendgrid/toolkit.rb', line 41

def self.delete_invalids(emails: [])
  PROFILES.map do |profile|
    new(profile: profile).delete_invalids(emails: emails)
  end.flatten.uniq
end

.get_blocks(_query_params = {}) ⇒ Object



35
36
37
38
39
# File 'app/services/sendgrid/toolkit.rb', line 35

def self.get_blocks(_query_params = {})
  PROFILES.map do |profile|
    new(profile: profile).get_blocks({})
  end.flatten.uniq
end

.get_bounces(_query_params = {}) ⇒ Object



23
24
25
26
27
# File 'app/services/sendgrid/toolkit.rb', line 23

def self.get_bounces(_query_params = {})
  PROFILES.map do |profile|
    new(profile: profile).get_bounces({})
  end.flatten.uniq
end

.get_invalid_emails(_query_params = {}) ⇒ Object



29
30
31
32
33
# File 'app/services/sendgrid/toolkit.rb', line 29

def self.get_invalid_emails(_query_params = {})
  PROFILES.map do |profile|
    new(profile: profile).get_invalid_emails({})
  end.flatten.uniq
end

Instance Method Details

#delete_blocks(emails: []) ⇒ Object



88
89
90
91
92
93
94
95
96
# File 'app/services/sendgrid/toolkit.rb', line 88

def delete_blocks(emails: [])
  data = {}
  if emails.blank?
    data[:delete_all] = true
  else
    data[:emails] = emails
  end
  client.suppression.blocks.delete(request_body: data)
end

#delete_bounces(emails: []) ⇒ Object



108
109
110
111
112
113
114
115
116
# File 'app/services/sendgrid/toolkit.rb', line 108

def delete_bounces(emails: [])
  data = {}
  if emails.blank?
    data[:delete_all] = true
  else
    data[:emails] = emails
  end
  client.suppression.bounces.delete(request_body: data)
end

#delete_invalid_emails(emails: []) ⇒ Object



98
99
100
101
102
103
104
105
106
# File 'app/services/sendgrid/toolkit.rb', line 98

def delete_invalid_emails(emails: [])
  data = {}
  if emails.blank?
    data[:delete_all] = true
  else
    data[:emails] = emails
  end
  client.suppression.invalid_emails.delete(request_body: data)
end

#delete_invalids(emails: []) ⇒ Object



80
81
82
83
84
85
86
# File 'app/services/sendgrid/toolkit.rb', line 80

def delete_invalids(emails: [])
  r = []
  r << delete_blocks(emails: emails)
  r << delete_invalid_emails(emails: emails)
  r << delete_bounces(emails: emails)
  r
end

#get_blocks(query_params = {}) ⇒ Object



75
76
77
78
# File 'app/services/sendgrid/toolkit.rb', line 75

def get_blocks(query_params = {})
  response = client.suppression.blocks.get(query_params: query_params)
  response.parsed_body
end

#get_bounces(query_params = {}) ⇒ Object



65
66
67
68
# File 'app/services/sendgrid/toolkit.rb', line 65

def get_bounces(query_params = {})
  response = client.suppression.bounces.get(query_params: query_params)
  response.parsed_body
end

#get_invalid_emails(query_params = {}) ⇒ Object



70
71
72
73
# File 'app/services/sendgrid/toolkit.rb', line 70

def get_invalid_emails(query_params = {})
  response = client.suppression.invalid_emails.get(query_params: query_params)
  response.parsed_body
end